Frame provides four functions to control the Frame Level, a z-axis coordinate to position frames in front of each other within an existing Frame Strata.

  • GetFrameLevel() returns the current value
  • SetFrameLevel() manually defines any value from 0 to 10000
  • Raise() moves the frame ahead of others within the same strata
  • Lower() moves the frame behind others within the same strata
frameLevel = frame:GetFrameLevel()


number - Z-axis coordinate between 0 and 10000, within the larger Frame Strata.


  • Raise() elevates the frame to a level that puts it ahead of others, while Lower() does the opposite
  • Creating two frames, and calling Raise() on each, will result in one being higher depending which was called last
  • By default, every frame is drawn just in front of its parent (if it has one); so usually child:GetFrameLevel() == parent:GetFrameLevel() + 1
  • Level has no impact on frames in different strata.
  • SetFrameLevel() is equivalent to the XML attribute in <Frame frameLevel="">

Patch changes

  • Legion Patch 7.0.3 (2016-07-19): May be manually set to any value from 0 to 10000.[1]

See also


  1. ^ TheDanW 2016-07-20. IRC log for #wowuidev.​ “(17:49.46) With 7.0.3, frame levels will no longer change automatically.... (17:59.34) [They] used to "compress" which caused all sorts of weird behaviour, like just the ordering of creating child frames could adjust your frame levels differently. (18:00.07) [They] now always stay what you set them to, and always sort correctly using that frame level”