Im looking for reliable software that will help me to manage electronic components, tools, drills, wires in my workshop.

Currently I have probably more than 1000 diffrent components. My brain can't manage this anymore.

My "wishlist":

  1. preferable free or low cost software

  2. not too complicated

  3. locations feature ("where is it" eg. Shelf 1 -> Box 1)

  4. stock/shopping history - where and when I purchased part and how much I paid

  5. categories with tree structure

  6. some functionality to assign part to projects (example: I want to note somewhere that im using MCP3424 in "Acurrate voltometer v2" and "Raspberry Pi Solar Energy Logger" projects, also I want to see full part list for "Acurrate voltometer v2" project)

  7. client-server architecture would be nice

  8. (optional wish) functionality that allows me prepare shopping lists (sometimes I forget to order something, I don't want to order just 1 part an pay for the shipping, so I'm planning buying it next time)


So far nothing really interesting appeared in answers. Excel or PHP based solutions are not productive enough (too much clicking). zParts is too simple, I can write something like this myself in 2 hours :)

  • 6
    \$\begingroup\$ This question is so awesome that I almost don't want to close it... \$\endgroup\$ Commented Apr 24, 2014 at 22:17
  • 2
    \$\begingroup\$ Most, if not all, of what you want can be done within Excel at no cost. The main problem with this type of application is the discipline required to enter the data every time you buy a part, use a part, lose a part, destroy a part, etc. \$\endgroup\$
    – Barry
    Commented Apr 24, 2014 at 23:33
  • 1
    \$\begingroup\$ @Barry You can also do it in paper notebook... And now seriously - I was thinking about Excel, but managing stock changes history will take too much time. I need some relational database at least. I asked about dedicated software because maybe there is something good ready to use... \$\endgroup\$
    – Kamil
    Commented Apr 24, 2014 at 23:47
  • 8
    \$\begingroup\$ Excel? No cost? I guess we know where you get your software... \$\endgroup\$ Commented Apr 24, 2014 at 23:53
  • 1
    \$\begingroup\$ Hey, Kamil, I've updated my answer based on my recent use of Parts-in-Place. You should really look into it. \$\endgroup\$
    – Ricardo
    Commented Jul 2, 2014 at 13:39

11 Answers 11


Since my last update to this answer, I was lucky enough to find an online system that meets most of my (and the OP's) requirements for managing small electronic components inventory. The service is called Parts-in-place.

The system is based on a typical workflow of small electronics products companies (so the site says - how would I know, I'm just a hobbyist) that incidentally supports the work of more serious hobbyists. The workflow looks like this:

  1. After signing up, you start by importing your parts database into the system Parts Library. That's the central repository where all information about your parts will be stored. For a minimal setup (like mine), you'll only need to fill out a few columns, such as the Company's Part Numbers and Description. This is easily done thanks to the systems excellent integration with Excel. It is worth to note that before using the system, the user must define a standard coding for its parts (the above mentioned Company's Part Number) which will be used throughout the system.

  2. Then you create a Bill of Materials which will represent an electronic board that your company (or the hobbyist) plans on building. You specify the part numbers and quantities that will be used. This information will later be used for defining necessary part orders.

  3. Then you define how many boards are to be built based on a single Bill of Materials. This will later be used to define Parts Orders, in which the system confronts the required materials against the available inventory. You can later add more parts or change quantities in the order, before placing it with the suppliers.

  4. Once the order arrives, you record it on the Part Arrivals tab.

  5. Then, there are tabs for recording actual assemblies and parts transfer from inventory. Since I don't have such a factory, I don't really use those tabs. But you can if you want to play factory.

  6. At any moment you can update inventory information using the Parts Write-offs and Inventories. The former can be used to account for parts that were lost for any reason or that were used and not tracked by the system workflow. The latter can be used to update part counts based on ad-hoc inventories performed.

The system is really easy to use, has a nice, modern and very responsive user interface. The free account (the one I signed up for) limits you to a single user, 3 BOMs and about 100 parts per BOM. I haven't reached any of them yet.

I wanted to highlight that the system features an extraordinary integration with Excel, both for importing and exporting. For importing, it does a great job identifying column names automatically and it's really forgiving regarding formatting and other trash that you may have left in your spreadsheet. The export function results in a nicely formatted spreadsheet that may be used elsewhere without problems. It's XLS format is recognized by Excel and OpenOffice Calc as well.

Here's how I think the system meets the OP's requirements:

  1. (Yes) free or low cost software - it has a free account available.

  2. (Yes) Not too complicated - it's really easy to use. Also, since it's a service, you don't have to go to the trouble of setting the software up or installing anything.

  3. (Yes) Locations feature (Shelf 1 -> Box 1) - you can determine where the parts are stored.

  4. (Yes) Stock/shopping history - the system lets you control shopping history pretty well. Orders also reflect on the stock upon arrival.

  5. (No) Categories with tree structure - the system only presents a flat structure for parts. You can workaround this by selecting a clever prefixes for part numbers. But to me, not having categories makes things simpler. To me, less is more in this case.

  6. (Yes) Functionality to assign part to projects - that's exactly what BOMs are for.

  7. (Yes) Client-server architecture would be nice - it's an online service set up online, it's client-server.

  8. (Yes) Functionality that allows me prepare shopping lists - it let's you prepare shopping lists based on BOM's and how many boards you say you want to build.

There are a few implied requirements that the system doesn't meet:

  1. (No) It isn't open source.

  2. (No) Since it's a service, you normally won't have it running on your servers. If the company goes bankrupt, your data is gone. But since it provides a nice Excel export feature, you can have all your data backed up and ready for use in other ways. Also, the company says they can setup Parts-in-Place to run at your servers, but I suspect this may be expensive.

Here's a screenshot of the BOM screen:

Screen shot

PS. I'm not affiliated with Parts-in-Place in any way.

Below is the original evaluation I had made of other systems.

  • zParts - Free and open source. But it is a bit too simple for the requirements. I guess one could probably use Excel to do the same zParts does.

  • PartKeepr - Web-based built around PHP, JavaScript and MySQL. Didn't actually install it, but read through some of its docs.

  • Ciiva - another online service for BOM management with integrated components database search. Seems pretty powerful yet simple, but I still couldn't find a way to manage my own inventory of components, but there's gotta be one as it let's you resell excess inventory.

  • My latest Google search on the topic - nothing really interesting, but maybe the search terms may help you filter the results better.

PS. I'm not affiliated with any of those companies in any way.

  • \$\begingroup\$ Hey! You may also want to add bomer.co to the list. Currently in beta, but it's free, has parts inventory, history, shopping and BOM management is on the way! (disclaimer: I'm the developer) \$\endgroup\$
    – cidadao
    Commented Mar 11, 2016 at 4:19
  • \$\begingroup\$ Now called bomist.com \$\endgroup\$
    – cidadao
    Commented Mar 12, 2018 at 22:08
  • \$\begingroup\$ I also use Parts-in-Place, and I am happy with it. After 30 days trial, I am ready to pay for it. I make about 3 different PCBs each month, and all my old ways of component management became too tedious. \$\endgroup\$ Commented Sep 16, 2018 at 8:07

We have done an evaluation for my company some months ago because Excel Spreedsheet has reached its bottleneck when multiple engineers are working on the same product at the same time, track of changes, tractability. Finally, three commercial options left for us, PartsinPlace, Aligni, Ciiva. Though we have also looked into SiliconExpert and ArenaSolution, which are more powerful and professional. But the cost can easily exceed $1000/user/year. We cannot figure out the complex licensing modules and obviously we are not looking for an ERP solution...

PartsinPlace is simple to start but lack of features we needed, and not cheap for the limited features. It's fine to try if you are mainly focus on inventory management. Ciiva seems to be a much more professional, and its embedded component database is quite amazing, provides real-time pricing and stock, lifecycles and alternatives. However as mentioned earlier, it's not straightforward about how to manage inventory because you need to create some custom attributes first. Aligni also provides rich features and more like a MRP solution but its price is out of our budget, even several times of PartsinPlace...


http://partsinplace.com/pricing/, free version for 1 user and up to 105 units

http://ciiva.com/bill-of-materials-software/subscriptions, free version for 3 users and starts with 3,000 units, up to 10,000 units if you invite friends (like dropbox)

http://www.aligni.com/#signup, no free version, paid version starts at $39 per month, up to 400 units. The ENTERPRISE version costs $199 per month, up to 10,000. What happened if my parts exceed 10,000?






Like Sean Boddy above, I am not trying to be sarcastic, etc either.

If you are a hobbyist and just trying to keep your sanity while keeping track of many small components like resistors capacitors, ICs and connectors, etc, the most practical system is to use index or Rolodex cards. ( Rolodex are preferred because they stay in place and are easier to thumb thru quickly.)

For larger parts get some small parts plastic drawer cabinets and label them with letters and numbers - letters identify the cabinets and letters for the drawers. Get the kind that allow you to divide the drawers into 2-3-4 bins with slide in dividers. Glue the dividers in place. I have some drawers undivided (for larger comps or larger quantities of the the same part), others divided in half, some in quarters etc. For many ICs I might only have 2,3,4 of a given type, so a 1/4 drawer is fine and space efficient too. The important thing is that you can find that single IC quickly when you need it! (As you know it won't do you one bit of good to have it, if you can't find it!)

DO NOT WRITE the name or part number of component on the drawer, just the identifying number. Once you accumulate a dozen or so cabinets with 30-50 drawers apiece, you will find yourself in a mental daze trying to find a part by reading all of those little labels. Instead, divide your Rolodex file into categories with appropriate divider cards. "Connectors", "Digital ICs" "Analog IC's", "Op-Amps", "Voltage Regs", "LEDs", "Hardware" etc. Write the name or part # of the component in bold ink letters at the top of the index card and the cabinet-drawer # in bold PENCIL as well (so you can change the location easily when that becomes necessary). At the bottom of the card fill in other important information about the component. E.g. voltage rating, supply voltage, distributor part #, package info, etc.

Don't try to categorize the cabinets and drawers either, just assign new drawers as you get new parts to store. The letter-number system is so efficient, you'll be able to locate components in less than 10 seconds even with randommly assigned drawers. From time to time you can regroup drawers simply by transferring components and rewriting the cabinet-drawer number on the Rolodex cards - which you orignally wrote in pencil for exactly this reason. In this way you can keep similar components in the same area of you cabinet array for convenience and visual hunting.

For surface mount discretes like resistors, caps, diodes etc. I use small No. 1 manilla coin envelopes to store the parts rather than the small parts cabinet drawers. I stack these envelopes in larger plastic parts drawers like you can get from U-Line, etc. If you pick the right size drawer and the right size dividers you will find that the coin envelopes stack perfectly in several neat rows across the width of the drawer. You can store hundreds of component types in just a few of these drawers. Use a separate drawer for each component size (e.g. 0603, 0805, 1206). Write the type, value, tolerance and size of the enclosed component on each envelope and stack the envelopes in VALUE ORDER in the divided drawers. If you can get a few different color coin envelopes it will help you organize a little better. White, dark manilla and light manilla are the most commonly available. (I use white for capacitors and mnailla for resistors.) I don't attempt to keep track of standard value resistors or caps in the Rolodex system, it's just as simple to go directly to the drawers and flip thru the envelopes. As you add new values and sizes to your collection, simply write up a new envelope - takes 5 seconds and you don't have to wait for your PC to boot up! I keep extra envelopes in each drawer.

Years ago I tried orgainzing all of my parts ( probably about 500 different types at the time) with a spreadsheet. Too impractical for normal shop use for a number of reasons! I learned the system described above from a friend and never looked back. I can only imagine how many times I would have had to update all of the information every time I changed PCs or updated operating systems!

  • \$\begingroup\$ I have similar organisation for now, but Im using small plastic organisers, some boxes, I collected many diffrent "containers" over years. It can be managed, sure, but I really need some catalog on my laptop. Btw, can you show some photos of your storage? \$\endgroup\$
    – Kamil
    Commented May 15, 2014 at 18:08

When I was Operations Mgr/Sr Eng, we had 10k different parts, so after search for weeks I gave up due cost of software but more important cost of training 20 staff. Circa '97

So we used spreadsheets for quotes on 1000parts sorted by distriibutor and existing ENg database from FoxPro upgrade with a Master Registry and accounting inventory dumps from Great Plains software. After a month with an uber programmer's assistance in his spare time, we had a dozen forms for stock picks from BOM builds, Master Registry with in house PN and many AVL p/n's for each and lists for stock counting, BOM RFQ's P/N reduction plans, for common parts.

My advice?


Use the best tool you know how to use, while the worst part is entering all the data.

`... excel? With autofilters , pivot tables, view forms for data input + output, sort search etc. with auto-backup

  • 2
    \$\begingroup\$ Well, I'm able to do it in Excel, Access, I can make application in .NET... But I can't believe that there is no such thing already done and available for free or 20-50USD. Maybe I should do it and try to sell it? :) \$\endgroup\$
    – Kamil
    Commented Apr 24, 2014 at 23:56
  • \$\begingroup\$ Did you check open source. Real programmers need income \$\endgroup\$
    – user40708
    Commented Apr 25, 2014 at 0:07
  • \$\begingroup\$ I know what you mean. There are so many poorly written and bad managed open source projects... I hate these. \$\endgroup\$
    – Kamil
    Commented Apr 25, 2014 at 1:27
  • \$\begingroup\$ Access would be my choice. If you want history, then you need an RDB \$\endgroup\$
    – user40708
    Commented Apr 25, 2014 at 1:44
  • 1
    \$\begingroup\$ Scrap Access, M$ lets you download Visual Studio (which has well-integrated data access capabilities) and SQL server for nix for home/student use. \$\endgroup\$
    – markt
    Commented Apr 25, 2014 at 2:03

I'm not trying to be silly, sarcastic, snarky, stupid or any other s-word. I want this answer as much as you do. Don't select this answer.

But I saw what happened when the Navy tried to go paperless in their supply lines. It was a bureaucratic nightmare that required retraining to participate in, and it somehow managed to generate even more paper waste.

I prefer classic methods - catalogs, log book, and index cards. The catalog identifies where the part is in the log book, and the log book identifies which index card is applicable. Getting a new part means adding the next index card and the next log book entry serially. The catalog gets updated with the log book volume and entry number and is actually categorized. The index card itself maintains the location and quantity data for the part. If you need a part, you retrieve the card, go to the place, get the stuff, and take it to the clerk. Clerk updates the card, decides if it needs to be ordered, and puts the card back. Expensive stuff stays under lock and key with the clerk or his boss. You can go to the trouble of using fire safe-boxes for all the cards, but in reality all that you have to keep safe is the logbook and the catalog; in the event of a big casualty, you'll be auditing inventory anyway.

I dare not say this is what you want. I say this is cheap, easily trained on, multiple access, and has 100% uptime once implemented. Project files can easily directly reference the associated index cards, as can ongoing and periodic maintenance files. Technicians immediately know exactly what they need and exactly where to find it. Data entry still sucks - once. The serialized index cards for 1000 different components should be about 7 inches thick.

If you want an audit, flip through the stack, grab a card and go look. If you want to use multiple catalogs, fine - just keep adding to the serialized log-book and index cards as you add parts to inventory. Retire a part? Throw away the card and line it out of the log book.


Partkeepr (already mentioned) is a surprisingly workable solution. Do not dismiss it, as it fulfills most of the requirements you listed.

I initially had the same reservations as you do (PHP means too much clicking), but since I haven't found anything comparable, I went ahead with Partkeepr. This was made easier by the fact that its database is easily accessible via SQL, so I can always manipulate and export my data. There is no lock-in.

I should probably write a blog post describing my full setup, but in brief:

  • Partkeepr stores my part data
  • I have my storage in numbered boxes (jwr-b1, b2 ... b18 at this time) of various sizes. If a box has compartments, these are numbered as well (so we get jwr-b1-a4 for box b1 in my collection, row A, pocket #4 from the left). A box compartment might store individual components (such as USB connectors), or up to tens of plastic bags.
  • The 'jwr' (my login) prefix is there because I will eventually want to share the data with friends or hackerspaces
  • I enter pricing data so that friends can get parts from me without me losing too much money (although in the future I plan to impose a 20-25% surcharge to cover other costs like shipping)
  • Components are either stored on reels, or in plastic ziplock-style bags. For bags, I mostly use 10x10cm and 7x5cm,
  • Every box, most box pockets/compartments and of course every bag and reel gets a sticker,
  • Stickers are printed using a Brother QL-570 printer (highly recommended). Data for the stickers comes from the Partkeepr database, converted to CSV by a perl script. In general, it takes 2 commands and two clicks in the Brother printing program to load updated component data, and another three clicks to print labels for all components added since the last time.
  • An advantage of Partkeepr using an SQL database is that when I get a full 0603 resistor series (packaged set), I can just write a short perl script that will generate the database entries, instead of painstakingly entering all the resistors myself (R0603-4K7 etc).

Overall, I'm quite happy with this setup. Adding new components requires a little work, but is relatively painless. Finding components is very quick. Most importantly, there is little "extra" work: I hate solutions which require work for their own sake. I want to spend time on electronics, not organizing components.

I would like to see a fast and responsive native Mac app that would do the same thing (I'd be willing to pay up to $100), but in the meantime this solution gets 80% done, costs $0 and works today.

I plan to describe this setup in detail, also providing the perl script and possibly sticker templates. I will update this answer when I get this done.

**EDIT: 01.09.2015 ** — I finally decided I need a better solution and created PartsBox.io — a way to keep track of your electronic components. It's free for hobbyists/makers.

  • \$\begingroup\$ Just thought I'd mention that Partkeepr is unmaintained at the moment. Its on Github however, so hopefully new contributors can be found. \$\endgroup\$ Commented Oct 23, 2014 at 3:12

I'm a software developer and while going to a server is a cool idea, I doubt its worth the trip for you and your current needs. If you had an inventory system that had to be accessed by others that's a different story, but as you've described its for you only. I looked closely at the PartKeepr system listed above as well as some of the other inventory manager programs displayed at Github. ou could spend a lifetime trying to find just the right one. Like others here, I strongly recommend Excel. Learn how to use data--> filter--> autofilter.

Without getting into too much detail, database designs are given rules (called "normalization") so they are fast and efficient. With your needs no way can a single storage (DataBase) file do what you want to do. The good news is, Excel will easily let you break the rules for complete functionality.

You have a couple of needs that would be a bit unusual. --Categories with tree structure. Grab an empty sheet in your XL workbook and create your perfect tree structure. How many branches do you have? Here's an example:

-Level 1
    *Level 2
        *Level 3
        *Blade Type
        *Banana Pins
    *Coax Cable
    *Terminal Blocks
    *Barrel Power Connectors

Draw your category tree.. Label your reference sheet so you can refer here when you need to add an item, and can't remember which category it goes in. Then on your data spreadsheet (for this example) you would use three different adjoining columns. Column 1 = level 1, col 2 = level 2, etc... Obviously you would have to duplicate the category 'headers' for each component line,

Column A   / Column B        / Column C
Connectors / General         / ()
Connectors / Wiring          / Blade Type
Connectors / Wiring          / Banana Pins
Connectors / Coax            / ()
Connectors / Terminal Blocks / ()
Resistors  / Suface Mount    / ()

Remember you can use data filter autofilter on multiple columns.

For finding stuff that links to a special project, you will have to use the "Tag" model. You will have to again create a reference sheet. Why, you ask? Because it is important that each tag be a SINGLE code word. "Accurate voltmeter v2" becomes "AV_V2" . You will have a SINGLE column entry on your spreadsheet called "Project Tags". In this field, you will add nothing, or what ever projects used this component. Each tag MUST be separated by a space. This field can have zero, one, five or fifty entries. When you want to find all components for the project of interest, you just crank up the data-> filter-> autofilter -> contains (codeword) and you are good. (or was that codeword ?) DO NOT CREATE A NEW COLUMN FOR EACH PROJECT. Believe me that will mess you up later. (Note it is this "keep track of which project" requirement from you that messes up database normalization.. look up DB 3rd normal form. And because of that, ACCESS would be sort of confusing to use. You would definitely have to add more tables.)

Ditto for WishList. Create a single column. Insert quantity of parts you want (1, 2, X or blank).

Hint: I've done lots of work on corporate XL database. Although its very tempting to attempt to add unique lines to the database to make it more 'readable' resist that urge at all costs. You database will have a single line header, then one line per component, simple. If you must create a pretty output, learn how to use macros' then copy the lines to another sheet, then print out that sheet. Don't screw with the database master table.

One other idea. XL will store word and images easily. You could also create other sheets in your Excel workbook. One project per sheet. On that sheet is a photo of the complete project and key notes as well as a screen shot of the schematic. Rename the sheet (use keyword project names?) than add that link to the keyword directory system. Might be a nice way to keep stuff organized. Also note. You've put a lot of work into this, best to investigate an automated backup system.

Will that work for you? Apologies for the long winded response, I get paid by the word :^)

Edit, update April, 2020

Google sheets is a free online spreadsheet service. It will easily do all the tasks listed above. In addition:

  • Google performs backups with logging.
  • You can share the online sheet with friends
  • Google supports a free app so you have full access to the spreadsheet from a mobile device (mobile phone or tablet)
  • Google even provides an API so data stored in a Google sheet can be accessed from server, used as a traditional software data storage location.
  • price = free
  • \$\begingroup\$ I agree, except I used commodity codes for indexing, SCR and Screws were not together , separate from part description ... which followed strict rules like zit-zit's hierarchy like ... "Transistor, Mosfet-N 50mOhm 60A 100V TO220" "SCR 15A 250V TO220" watch out for typo errors \$\endgroup\$
    – user40708
    Commented Apr 25, 2014 at 9:03

The easiest technique i've found is whenever I purchase something to save a text version of the invoice and add a tag indicating where you've put it (Draw33, DIPMosfetsBag2 etc.). Sometimes I add some more details of the component - the filename of the datasheet, link to a website, or some notes.

Store this in a text/word/markdown file or files, or Evernote/wiki or whatever you can search easily by partname, note, location. Unless you have 10s of thousands of components or other people using them I find this to be sufficient and very low maintenance.

I usually update the count of components on a label attached to the bag/box/draw they're in. If running low I can search by tag and quickly find where I purchased and how much they cost.


I’m surprised no one has mentioned http://partsbox.io I’m just starting to evaluate it and it looks like it fulfills most of your requirements.


I would like to introduce a Electronic Component Organizer that runs on Windows called WinHeist. It's been featured in the JameCo Electronics newsletter!


You might want to give BOMIST a try: https://bomist.com It literally has all the features you described (except for the client-server architecture, but I see that as an advantage - zero setup)


It runs locally, so no server nor setup are required and you can have as many databases as you want (just run as many instances of BOMIST as you want). It is integrated with Octopart, meaning you get plenty of useful real-time data: datasheets, descriptions, package names, values, prices as well as other useful information are automatically fetched online. Also, importing data into BOMIST is VERY easy which means you'll get up and running in no time. BOMIST is being actively developed and many new features are already inline.

Disclosure: BOMIST developer here


Not the answer you're looking for? Browse other questions tagged or ask your own question.