Brickficiency is no longer supported

With the advent of Bricklink 2.0, Brickficiency is no longer needed. The auto-finder may not be perfect, but it's quite a lot faster and easier to use than Brickficiency. I've left this page her for posterity, but the database behind Brickficiency is no longer available.

About Brickficiency

Brickficiency finds all combinations of Bricklink stores that can supply all items in a list, and returns them in order of total cost.


The current version is 0.95.4, released Nov 3, 2014. It can be downloaded here. It requires the Microsoft SQLCE Runtime, which can be downloaded here.

Previous Versions


Brickficiency is now open source. The project is hosted at GitHub.


  1. Either open an existing .bsx file, import one from a Bricklink wanted list, or create a new one.
  2. Click "Tools", then "Calculate".
  3. You can choose to select a minimum and maximum combination. For example, if you select "2" beside maximum, it will only search for combinations of two stores. Some part lists can have millions of different store combinations to search through at the 3 and 4 store levels, and can take quite a while. 5 stores can, in some cases, take hours.
  4. You can also choose to keep looking through higher combinations of stores, even if a lower combination is found. Sometimes buying all of the parts you need from four stores would actually be less expensive than buying from three stores even after paying the extra shipping costs.
  5. If you prefer the parts in the report to be sorted by colour then name instead of just by name, that is an option.


  • Bricklink Wanted List XML for each store in each match is included in the report. To use it: Add a new wanted list to Bricklink, noting the ID number of the list. Paste the ID number into the text box just above the XML. Press Go. Copy the contents of the XML text box, paste that into the Wanted Upload section of Bricklink.
  • Items with a status of "X" will not be included in calculations. Item status can be changed by double clicking on the status icon.
  • Bricklink should return prices in the currency of your country, but there is no guarantee (unless you log in with your bricklink account).
  • If a store has specifically stated they will not ship to your country, they will never show up in a report.
  • Stores can be blacklisted individually by store ID number (listed beside the store name in the report). In the "Calculate" window, click the blacklist button. put any id numbers of stores you do NOT want to appear in the report (one per line) in the text box and click Ok. Those stores will no longer show up on reports. I have resisted the urge to circumvent blacklisting of my store. What a nice guy I am.
  • Some fields can be modified by double clicking them (Qty, Colour, etc.)

Bugs & Todo

If you find a bug, feel free to submit an issue, send me a tweet (@mjlo), or contact me on Bricklink or Reddit.

  • Add more list creation/manipulation features
  • Add undo/copy/paste
  • Add multi tab support
  • Change the report to match the gui (or at least look better)
  • bricklink login page
  • possibly a mac version
  • multiple identical lots are not being handled properly
  • import multiple wanted lists
  • fix importing wanted lists when there are more than 1000 items in all wanted lists
  • cached price guide pages are currently used, regardless of how old they are. If you leave BF open for days, it could become a problem.
  • add support for blacklisting "least favorite stores" while logged in.
  • add a supplemental report when no matches are found


  • 0.95.4
    • There was a bug in 0.95.3 that was not extracting the database properly, causing it to crash. I believe this should be fixed now.
  • 0.95.3
    • Brickficiency has outgrown Google drive hosting! The database will now be downloaded from dedicated hosting.
  • 0.95.2
    • Fixed an issue in 0.95 where dependencies were not being included in the .exe. I want to keep Brickficiency as portable as possible, but for now there are a couple of folders containing DLL's that have to sit in the same folder as Brickficiency. I'll try to remedy this in the future.
  • 0.95 - Proper Database, more list creation options
    • There is now a proper database that is automatically updated. It can also be manually updated from the tools menu.
    • Can now manually change item id numbers or double clicking on the item name brings up a change item box
    • Can now create new lists and add parts to a new/existing list (although there is a display bug in the add item dialog)
    • Placing the mouse cursor over a picture of an item will show a larger version of that picture. Double clicking will show an even larger image (the colour may not be accurate on the double clicked image)
    • Selecting a single item will show which sets that item is in, and the quantities it contains.
    • Can now (mostly) import an LDD file, thanks to! If any items are skipped, the item information (item ID, colour, quantity) will be shown in the message window. If you can figure out which part it is from the lego ID, you can still add it manually.
    • Can now export a list to a bricklink wanted list.
    • Fixed an issue while importing wanted lists when there is no sublists.
  • 0.94 - Context Menu
    • Right clicking on a part or selection of parts will bring up a menu with a bunch of different options that look vaguely familiar.
    • Store total price, item quantity and lot quantity are displayed at the top of each store in the report.
    • Item images and names in the report are now links to the item in the respective Bricklink store.
    • 404 errors while downloading part images are no longer reported (because that was very annoying).
    • Fixed an issue reading Bricklink database files on some computers.
    • The price column will now display 3 decimal places, and the total column 2. Both columns will round to said decimal places.
    • The "Calculation Options" window is now called "Calculation Options".
  • 0.93 - Assorted additions and bugfixes
    • Fixed some problems opening XML files and importing BL wanted lists
    • Fixed a bug while reading price guide pages in other regions. I don't know if you guys know this, but there are countries outside of North America and some of them have different number formats!
    • Added some more error checking while opening and importing files
    • Can now change colour of parts and gear by double clicking on the colour
    • Calculation will now skip superlots, if your Bricklink price guide settings show them (requires log in while calculating.)
    • Can now re-download Bricklink DB files (from the tools menu)
  • 0.92 - Assorted changes and bugfixes
    • New toolbar
    • The progress bar is now more granular when calculating.
    • Fixed another bug in importing wanted lists (oops).
    • Fixed a bug with displaying (or lack thereof) millions of matches checked.
    • Matches in excess of the "Matches per combination" setting are pruned to save memory. Some very large lists were running out of memory before finishing calculation.
    • Can now change status (by double clicking), condition (by double clicking), quantity, price, comments, and remarks. Also, deleting a line properly deletes the item. Stay tuned for more list creation and modification options.
    • Items with status "x" will not be included in calculation.
    • There is a button/menu item that will allow you to view the current/previous report. While calculating this will show any calculation levels that have completed, but not the current level.
    • Added more error checking and debug info
    • Calculation can now be cancelled at any time. The report will reflect any matches found at the current level.
    • Names of stores for any given country are now cached between calculations (in addition to cached price guide pages that I failed to mention last release)
    • Removed option to save bsx from the import window (don't worry, you can still file -> save as once it's imported)
    • You can now double click a wanted list name in the import window to import it.
    • Fixed a bug that would crash calculation if there were less items than the store combination you were searching for. You can now find a good combination of stores to buy 10,000 of a single piece from.
    • Backend stuff nobody cares about.
  • 0.91 - Fixed a bug in importing wanted lists
  • 0.90 - Completely rewritten in C#
    • You can now log in when retrieving price guide pages to ensure you get the proper information from bricklink.
    • much faster - uses multiple cores
    • No longer crashes or fails to open the report upon exiting.
    • Added checking to see if a whole list is available from 1 store.
    • Added a checkbox'ed list of countries.
    • Added a sortable list of parts upon opening a file
    • Config, report, other data files are now stored in the user profile (%appdata%\Brickficiency)
    • Generally just changed the whole gui.
  • 0.85 - Maintenance Fix and debug option
    • Maintenance checking sucked and was removed. Brickficiency will no longer check for Bricklink maintenance but will still not work during maintenance windows.
    • I've had little success getting BF working for people in other countries. I've added an option to save a debugging page that can be sent to me so I can see exactly what's coming up for users in other countries.
  • 0.85 - Switched to a new GUI module.
    • better main text window (can copy text from it now)
    • better file selection box.
    • reskinned the whole GUI.
    • can now import wanted lists from bricklink (and optionally save them to a .bsx file). I won't steal your password, I promise. (also, you can verify by looking in the code)
    • Lots that are not available will be skipped and matches will be found that do not include the skipped lot. These skipped lots will be listed in the report.
    • XML wanted lists that are uploadable to bricklink are now included in the report
  • 0.84 - A price summary for each store has been added at the top of each match
    • The name of the report file was accidentally reverted back to Brickficiency-Output.html. This has been fixed.
    • Cleaned up the code somewhat to release. Because the source is open. Like the page says. Even though you couldn't download the source.
    • Collapsible sections in the html report now collapse on the first click. Thanks /r/javascript!
    • Added a progress bar
    • Fixed a bug where the part list was incomplete
    • Added ability to find 5 store combinations.
    • The part list in the report now sorts by number of stores the part is available from.
    • Added a workaround for the report not opening occasionally when the program exits. Please let me know if you experience this issue, as I have a hard time reproducing it.
    • Brickficiency no longer accepts any sort of shenanigans. Feeding it a list of 3 parts will no longer look for matches from 4 or more stores. Feeding it a list of 1 lot will call you silly and quit.
    • automatically merge lots that are the same (ie, if you have two listings for Brick, Round 2 x 2 it will combine them into one lot)
  • 0.83 - Blacklist now functioning.
    • more error checking on config.
    • fixed error when select file dialog is cancelled.
    • The country a store is located in is now listed beside the name in the report IF the results are being filtered by country.
    • Option to sort store inventories in the report by color also added.
    • fixed some international price guide lookups
    • fixed processing price guide info greater than $1,000
    • fixed error checking while retrieving pages
    • The report now has a list of each part and how many stores have that part
    • The report now has collapsible sections
  • 0.82 - GUI is now responsive while processing.
  • Both UK and GB will work for the UK (Bricklink differs from the ISO standard)
  • 0.81 - Fixed problem processing large files
  • 0.8 - First beta release


I've removed the donation link because it's no longer "my" software.

If you really insist on donating, you can place an order in My Bricklink Store. That way, we both win! :)