This project is abandoned.

Whether this project is out of date or its author marked it as abandoned, this project is no longer maintained.

If you wish to take this project over, please report it and state your intentions.

Default Image


ReforgeLite is a lightweight reforging calculator that helps you figure out the optimal strategy to reforge your gear given your stat weights and caps without leaving the game.

The addon now has its own project page, located at
Downloads are still only available through Curse page.

What to do if you're not happy with the results

The quickest way to get response is to e-mail me directly at [email protected]
Please describe your problem, and, most importantly, attach a debug log that you can find by scrolling to the bottom of the main UI window (the "Debug" button inside settings section).

How to use it

To open the addon window, type /reforge or talk to the reforging master. On the left half of the window you can see your current item stats for reference.
On the right side you can set up stat weights/caps, or select an existing preset (presets are regularly updated from, which in turn gets its information from Elitist Jerks).
In the simplified mode, you can specify the stat priority, along with up to two capped stats (each capped stats can have an arbitrary number of breakpoints). If you want more control, you can go into advanced mode and enter the exact stats specific for your gear, obtained from a tool such as SimulationCraft.
Behind the hood, simplified mode sets the lowest stat to a weight of 100, and each next stat adds 20. When you switch between the two modes, ReforgeLite converts your current weights to the other format.

When you're done setting up weights/caps, press Calculate. The calculations are fairly memory/time intensive, so ReforgeLite might trade some precision for speed, though the losses should be minimal. You can press the Calculate button a few times if you want to try getting a better result, the output will always display the best result so far.

Once the calculation finishes, you will see a section with your stats after reforging, and the difference from your current stats. Click on the Show button to see which items should be reforged.
If the reforging UI is open, you can click on the Reforge button to automatically reforge all items in the selected way. Do not interfere in the process (clicking the cancel button or closing the reforging UI is fine). Caution: I'm only human, so while I try my best, I can not guarantee that this process is absolutely bug free, so its recommended to watch over the process. If you leave to make some tea and come back to find it spending thousands of gold reforging your boots over and over again, don't tell me I didn't warn you.

FAQ: The results seem incorrect. I'm getting too much/too little hit/expertise/etc.

First of all, with Mists of Pandaria, expertise now affects spell hit, so it is not uncommon for casters to reforge into some expertise (on items that already have hit) to reach the cap, especially at lower gear levels. Note that ReforgeLite directly adds your expertise rating to hit rating, which is not the way it is displayed in the game, but it is more convenient when verifying the result.
Also, keep in mind that ReforgeLite uses your currently active spec to decide which stat conversions are in place, so if you're a Paladin trying to reforge your Protection gear while in Holy spec, you will likely get very little hit because it thinks you get enough from expertise.

If you are still not satisfied with the results, feel free to e-mail me (at [email protected]) with a brief description of the problem and a debug log (found at the bottom of the scrollable arera, in the options category).

FAQ: I'm using certain items for my off-spec and I don't want their reforge changed.

Simply click on an item icon in the large stats table, this will lock the item's reforge.

FAQ: More caps?

This is a very popular demand, and I'm sorry to tell you that it is not possible with the algorithm I'm currently using. I'm fairly sure the only other way to go is a brute force approach, which is simply way too slow to work in a Lua environment. There are plenty of external tools that employ it, such as I will be adding an import option in the near future to make it easier to use their results.

FAQ: Decimal weights?

You might notice that you can't enter anything besides digits in the weight boxes. This was done for simplicity's sake, and it does not limit you at all - you can multiply all your weights by a 100 (or whatever you prefer) to make them integers, and that would not affect the result at all.

FAQ: My reforge/results window isn't showing up. What do?

There are a few possible reasons.
First, ensure that the addon is enabled (and not marked as outdated if you haven't checked the box to load out-of-date addons). If the addon isn't loaded, you should get an error when trying to type /reforge in chat.
Second, try enabling Lua errors in the game options. If this causes error messages to show up when you try to open the reforge window, then send me the text of the error and I'll figure something out.
Third, it is possible that you accidentally moved the window off-screen. The easiest way to fix this is by deleting the addon config file located at <game folder>/WTF/Account/<your account>/SavedVariables/ReforgeLite.lua - this should reset the addon settings to default (make sure you're in game when doing that, or the file will simply reappear). This will also delete your custom weight and reforge presets - if you want to avoid that, you can try editing the said file, by changing the values of variables "windowX", "windowY", "methodWindowX" and "methodWindowY". Values such as 100 for X and 500 for Y should make the window(s) visible at least.

You must login to post a comment. Don't have an account? Register to get one!

  • Avatar of Stanzilla Stanzilla May 29, 2014 at 13:17 UTC - 0 likes
  • Avatar of Pakka Pakka May 24, 2014 at 00:51 UTC - 0 likes

    @Pakka: Go

    update - Dridzt uploaded a fixed scaling.lua in the "Tickets" section (see above) - Iroared has uploaded a beta-version with a fix and a "pretty significant change to the underlying algorithm"

  • Avatar of Pakka Pakka May 22, 2014 at 01:00 UTC - 0 likes

    As of 5.4.8, Reforge Lite needs another scaling fix. RFL is unable to calculate correct values/ limits with items upgraded to 4/4 because it handles 4/4 items as if they were 2/2. After calculating, preview looks good, but after having reforged, results are way off limits (i.e. 100-200 points off limit).

    Last edited May 22, 2014 by Pakka
  • Avatar of angrysteel angrysteel Oct 10, 2013 at 16:21 UTC - 0 likes

    Working just fine again, thanks for quick update!

  • Avatar of Rivxyz Rivxyz Oct 10, 2013 at 08:26 UTC - 0 likes

    Ow, it's supposed to be 'method.stats[s]' instead of [i] in the said line (ReforgeEngine.lua#216).

  • Avatar of quetzalin quetzalin Oct 09, 2013 at 22:10 UTC - 0 likes

    Same as the previous post, 1.36 is still bugged when u try to reforge with one of the % stats trinkets from SoO is equiped. The UI doesn't load.

    Message: Interface\AddOns\ReforgeLite\ReforgeEngine.lua:216: attempt to perform arithmetic on field '?' (a nil value)
    Time: 10/10/13 00:01:04
    Count: 1
    Stack: Interface\AddOns\ReforgeLite\ReforgeEngine.lua:216: in function `UpdateMethodStats'
    Interface\AddOns\ReforgeLite\ReforgeEngine.lua:242: in function `ResetMethod'
    Interface\AddOns\ReforgeLite\ReforgeLite.lua:1012: in function `CreateOptionList'
    Interface\AddOns\ReforgeLite\ReforgeLite.lua:849: in function `CreateFrame'
    Interface\AddOns\ReforgeLite\ReforgeLite.lua:1653: in function <Interface\AddOns\ReforgeLite\ReforgeLite.lua:1644>
    [C]: in function `TurnOrActionStop'
    [string "TURNORACTION"]:4: in function <[string "TURNORACTION"]:1>
    Locals: self = <unnamed> {
     0 = <userdata>
     capPresets = <table> {
     close = <unnamed> {
     CreateOptionList = <function> defined @Interface\AddOns\ReforgeLite\ReforgeLite.lua:934
     itemTable = <unnamed> {
     UpdatePriorityPreset = <function> defined @Interface\AddOns\ReforgeLite\TaskUI.lua:261
     GetMeleeHitBonus = <function> defined @Interface\AddOns\ReforgeLite\Presets.lua:16
     IsReforgeMatching = <function> defined @Interface\AddOns\ReforgeLite\ReforgeLite.lua:1451
     InitPresets = <function> defined @Interface\AddOns\ReforgeLite\Presets.lua:580
     MovePriorityItem = <function> defined @Interface\AddOns\ReforgeLite\TaskUI.lua:249
     savePresetButton = ReforgeLiteSavePresetButton {
     debugButton = ReforgeLiteDebugButton {
     GetCapScore = <function> defined @Interface\AddOns\ReforgeLite\ReforgeLite.lua:410
     CapAllows = <function> defined @Interface\AddOns\ReforgeLite\ReforgeEngine.lua:247
     UpdateStatWeightList = <function> defined @Interface\AddOns\ReforgeLite\TaskUI.lua:136
     ChooseReforgeClassic = <function> defined @Interface\AddOns\ReforgeLite\ReforgeEngine.lua:464
     dbkey = "Quetzalita - Defias Brotherhood"
     settings = <unnamed> {
     GetItemReforgeOptions = <function> defined @Interface\AddOns\ReforgeLite\ReforgeEngine.lua:315
     itemStats = <table> {
     AddCapPoint = <function> defined @Interface\AddOns\ReforgeLite\TaskUI.lua:30
     UpdateMethodChecks = <function> defined @Interface\AddOns\ReforgeLite\ReforgeLite.lua:1503
     quality = <unnamed> {
     reforgeTable = <table> {
     GetNeededSpellHit = <function> defined @Interface\AddOns\ReforgeLite\Presets.lua:42
     UpgradeDB = <function> defined @Interface\AddOns\ReforgeLite\ReforgeLite.lua:129
     methodImportMenu = ReforgeLiteMethodImportMenu {
     computeButton = ReforgeLiteConfirmButton {
     FinalizeReforge = <function> defined @Interface\AddOns\ReforgeLite\ReforgeEngine.lua:225
     task = <table> {
     Compute = <function> defined @Interface\AddOns\ReforgeLite\ReforgeEngine.lua:590
     isWeights = ReforgeLiteWidget4 {
     ADDON_LOADED = <function> defined @Interface\AddOns\ReforgeLite\ReforgeLite.lua:1679
     leftGrip = <unnamed> {
     ilvlCap = ReforgeLiteWidget3 {
     targetLevel = ReforgeLiteWidget2 {
     convertSpirit = <unnamed> {
     title = <unnamed> {
     deletePresetButton = ReforgeLiteDeletePresetButton {
     CreateCategory = <function> defined @Interface\AddOns\ReforgeLite\ReforgeLite.lua:516
     GetReforgeID = <function> defined @Interface\AddOns\ReforgeLite\ReforgeLite.lua:1209
     InitReforgeClassic = <function> defined @Interface\AddOns\ReforgeLite\ReforgeEngine.lua:349
     DebugMethod = <function> defined @Interface\AddOns\ReforgeLite\ReforgeEngine.lua:652
     lastElement = <unnamed> {
     presetsButton = ReforgeLiteWidget1 {
     presetDelMenu = ReforgeLitePresetDelMenu {
     initialized = true
     statWeightsCategory = <unnamed> {
     presets = <table> {
     itemData = <table> {
     content = <unnamed> {
     scrollBg = <unnamed> {
     scrollBar = ReforgeLiteScrollBar {
     scrollFrame = <unnamed> {
     GetMethodPenalty = <function> defined @Interface\AddOns\ReforgeLite\ReforgeEngine.lua:127
     UpdateMethodCategory = <function> defined @Interface\AddOns\ReforgeLite\ReforgeLite.lua:1058
     MoveScroll = <function> defined @Interface\AddOns\ReforgeLite\ReforgeLite.lua:666
     QueueUpdate = <function> defined @In
  • Avatar of angrysteel angrysteel Oct 09, 2013 at 20:57 UTC - 0 likes

    Release 1.36 is spitting out errors when you visit the arcane reforger. Prevents the UI from even loading.

    1x ReforgeLite-v1.36\ReforgeEngine.lua:216: attempt to perform arithmetic on field "?" (a nil value)
    ReforgeLite-v1.36\ReforgeEngine.lua:216: in function "UpdateMethodStats"
    ReforgeLite\ReforgeLite-v1.36.lua:1176: in function "RefreshMethodStats"
    ReforgeLite\ReforgeLite-v1.36.lua:1169: in function "UpdateMethodCategory"
    ReforgeLite\ReforgeLite-v1.36.lua:1015: in function "CreateOptionList"
    ReforgeLite\ReforgeLite-v1.36.lua:849: in function "CreateFrame"
    ReforgeLite\ReforgeLite-v1.36.lua:1653: in function <ReforgeLite\ReforgeLite.lua:1644>
    <in C code>
    <string>:"TURNORACTION":4: in function <string>:"TURNORACTION":1
    self = <unnamed> {
     PrioToWeights = <func> @..\TaskUI.lua:610
     itemTable = <unnamed> {}
     CapUpdater = <func> @..\TaskUI.lua:130
     IsReforgeMatching = <func> @..\ReforgeLite.lua:1451
     InitPresets = <func> @..\Presets.lua:580
     MovePriorityItem = <func> @..\TaskUI.lua:249
     GetCapScore = <func> @..\ReforgeLite.lua:410
     CapAllows = <func> @..\ReforgeEngine.lua:247
     UpdateTask = <func> @..\TaskUI.lua:333
     dbkey = "Angrysteel - Illidan"
     ReorderCapPoint = <func> @..\TaskUI.lua:86
     UpgradeDB = <func> @..\ReforgeLite.lua:129
     methodImportMenu = ReforgeLiteMethodImportMenu {}
     WeightsToPrio = <func> @..\TaskUI.lua:679
     importFuncs = <table> {}
     debugButton = ReforgeLiteDebugButton {}
     db = <table> {}
     initialized = true
     presets = <table> {}
     deletePresetButton = ReforgeLiteDeletePresetButton {}
     statWeightsCategory = <unnamed> {}
     GetNeededMeleeHit = <func> @..\Presets.lua:30
     UpdateMethodCategory = <func> @..\ReforgeLite.lua:1058
     pawnButton = ReforgeLiteImportButton {}
     IsMethodValid = <func> @..\ReforgeEngine.lua:153
     UpdateWindowSize = <func> @..\ReforgeLite.lua:405
     presetMenu = ReforgeLitePresetMenu {}
     UpdatePriorityItem = <func> @..\TaskUI.lua:277
     GetMethodScore = <func> @..\ReforgeEngine.lua:120
     CreateFrame = <func> @..\ReforgeLite.lua:704
     SetAnchor = <func> @..\ReforgeLite.lua:593
     IsItemLocked = <func> @..\ReforgeEngine.lua:258
     deleteMethodPresetButton = ReforgeLiteDeleteMethodPresetButton {}
     pdb = <table> {}
     AddPriorityItem = <func> @..\TaskUI.lua:170
     RunImport = <func> @..\Parsers.lua:113
     itemSlots = <table> {}
     STATS = <table> {}
     methodPresetDelMenu = ReforgeLiteMethodPresetDelMenu {}
     GetStatMultipliers = <func> @..\ReforgeEngine.lua:100
     ParsePawnString = <func> @..\ReforgeLite.lua:431
     UpdateMethodStats = <func> @..\ReforgeEngine.lua:172
     methodStats = <unnamed> {}
     SetStatWeights = <func> @..\TaskUI.lua:360
     GetConversion = <func> @..\ReforgeEngine.lua:37
     scrollBarShown = false
     RemoveCapPoint = <func> @..\TaskUI.lua:77
     GetExpertiseBonus = <func> @..\Presets.lua:22
     MakeReforgeOption = <func> @..\ReforgeEngine.lua:268
     settingsCategory = <unnamed> {}
     UpdateContentSize = <func> @..\ReforgeLite.lua:1204
     methodImportButton = ReforgeLiteImportMethodButton {}
     capPresets = <table> {}
     close = <unnamed> {}
     QueueUpdate = <func> @..\ReforgeLite.lua:1258
     UpdatePriorityPreset = <func> @..\TaskUI.lua:261
     methodPresetMenu = ReforgeLiteMethodPresetMenu {}
     UpdateCapPreset = <func> @..\TaskUI.lua:93
     UpdateStatWeightList = <func> @..\TaskUI.lua:136
     ParseWowReforge = <func> @..\Parsers.lua:38
     isWeights = ReforgeLiteWidget4 {}
     itemStats = <table> {}
     AddCapPoint = <func> @..\TaskUI.lua
  • Avatar of limyle limyle Oct 09, 2013 at 08:43 UTC - 0 likes

    @Rivxyz: Go

    The new version has been more accurate, reduced memory footprint is really good news!

  • Avatar of Rivxyz Rivxyz Oct 02, 2013 at 05:44 UTC - 0 likes

    @limyle: Go

    First of all, check if the new version works, in eu client data there is a new upgrade path that goes to +16, maybe its the one asian versions use. Doubt it though, because same thing happened last month and asian clients had yet another upgrade path for this.

    Anywho, typing in a command like /dump GetInventoryItemLink("player",10) will print the link text for an item in the given slot (10 is gloves i think, try different values from 1 to 16). The link is something like "\Hitem:12341:32:324:2:3:4:3\h\cff00ccff[Gloves of Whatever]\r\h" etc (just typing random numbers here). One of the last numbers is the upgrade ID, it should be around 400. If you could find the values for asian items with different upgrade levels, that would help.

  • Avatar of limyle limyle Sep 25, 2013 at 04:51 UTC - 0 likes

    @Rivxyz: Go

    Maybe I can help you, but what should I do?


Date created
Jul 15, 2011
Last update
May 26, 2014
Development stage
  • deDE
  • enUS
  • esES
  • esMX
  • frFR
  • itIT
  • koKR
  • ruRU
  • zhCN
  • zhTW
All Rights Reserved
Recent files
  • R: v1.38 for 5.4.8 May 26, 2014
  • B: v1.38-beta for 5.4.8 May 23, 2014
  • R: v1.37 for 5.4.0 Oct 10, 2013
  • R: v1.36 for 5.4.0 Oct 09, 2013
  • R: v1.35 for 5.4.0 Oct 01, 2013