The catalog
Updated
A spreadsheet, and it will outlive any software you could buy instead.
One row per specimen
One row, one specimen, one number. A lot of undifferentiated material is one row with a count.
No merged cells, no color carrying meaning, no formatting doing the work of a column. All three make a file that cannot be read by anything but you.
The columns
Number. Species. Associated species. Variety.
Locality: working, district, county, state, country, as separate columns rather than one text field, which is what makes it sortable.
Coordinates and datum, if you have them.
Collector. Source. Date collected. Date acquired. Price paid.
Size class. Dimensions. Weight.
Identification basis. Treatments and repairs. Condition notes.
Provenance. Storage location. Photograph reference. Hazard flag.
Insurance value, and the date it was set.
Rules that keep it usable
Never reuse a number, never restart the sequence.
Never delete a row. A sold specimen gets a sold date and stays, because that is how you contact the buyer if an identification turns out to be wrong.
Update the location column when anything moves, which is the column that decays fastest.
And separate columns rather than free text wherever you might want to sort.
Backing it up
Export to CSV annually and keep a copy somewhere other than the room the collection is in.
A fire that takes the collection should not also take the record of what was in it, which is what an insurance claim rests on.
Photographs are part of the backup, not a separate thing.