How to remove old legacy structures (categories, custom reports, etc.) from a large database
Over the years I have massaged my Money Dance accounts into many different shapes and experiments. I now have many categories, Tags, etc. that I haven’t used for ages. I wanted to archive the earlier years where those items were used and then remove the unused categories, accounts, etc. that remain in my database.
I don’t mind having the larger dataset, but if I just go through and just delete all the things I no longer need, isn’t that going to create all kinds of side effects in the old transactions and records that could ripple down to all of today’s records? Since there is no “closing out” of a given year, an accidental change in 10 year old data could chain down through the years and screwup my current data, right?
If you delete a bunch of categories, don’t all of the transactions using them get thrown into some “unassigned” type group? I have a lot of transactions with multiple splits in my database. What happens when several categories in those splits all get assigned to the same “unassigned” group? Can MD handle this situation? (I wonder if this use case has ever been tested)
So are there any suggestions on how to keep your database clean without having dozens of unused categories cluttering up the system? Over the last 40 years I’ve used multiple budgeting tools, and I was always able to get around these issues by first chopping out the older data based on a different structure from the files that are now using new structures. That way I can still go back and see the legacy data, but not have to wade through all of the unused categories and custom memorized reports in my current database.
Thoughts?
Keyboard shortcuts
Generic
| ? | Show this help |
|---|---|
| ESC | Blurs the current field |
Comment Form
| r | Focus the comment reply box |
|---|---|
| ^ + ↩ | Submit the comment |
You can use Command ⌘ instead of Control ^ on Mac
1 Posted by dwg on 21 Feb, 2026 06:51 AM
A maxim with financial data is the present is determined by the past. Change the past and you change the present.
So if you change past data it can affect current balances.
If you delete categories any transactions in that category are deleted, you cannot have orphaned transactions and they are not moved to another category, they are removed from Moneydance and that means the transaction in the account is also removed. This is part of the nature of double entry accounting.
The only categories that can be safely removed are those that have no transactions in them.
Memorised reports can be removed, you do that through The Moneydance menu option Tools => Graphs and Reports, there will be a section where memorised reports are.
Toolbox does have an option to remove redundant data, this will not impact data integrity.
Use the Toolbox Extension to “shrink” the dataset, this will reduce your dataset size. To do this, install the Toolbox Extension (Extensions → Manage Extension) then:
1. Perform a Moneydance backup
2. Extensions → Toolbox
3. Select Update Mode
4. Select Menu: Advanced Options
5. Select: Shrink Dataset Size (set to 1 day)
6. Restart Moneydance
7. Perform a Moneydance backup
What this is doing is removing redundant data that is stored in the data set.
Support Staff 2 Posted by Ethan on 22 Feb, 2026 02:50 AM
I'd also add to the above information that you can make unused past categories as inactive. This will hide them from places like the category fields of the registers, which I think is the main thing you're asking for.
Access your categories from Tools -> Categories, choose to edit one you want to mark as inactive, and select that option in the window that appears. Repeat for as many categories as you need to.
This should hide the inactive categories from your active data, but won't delete past transactions. They will always be listed in Tools -> Categories if you need to access them.
Ethan
Infinite Kind Support
3 Posted by wisemanja on 26 Feb, 2026 05:21 PM
Thank you dwg and Ethan for your responses. I've been tied up for several days and have not had a chance to look at this yet. I do have two questions though:
dwg: what do you mean by the "redundant data" that can be removed with the "Shrink Dataset Size? If this is documented somewhere you can just point me to it.
Ethan: If I have a transaction from 8 years ago that was distributed to category "Work misc", I can go in and see this transaction now the same as when it was first created. If I mark "Work misconduct" as inactive, what should I see when I then look at the original transaction? Will t just show the same category even though it's been marked inactive?
4 Posted by Stuart Beesley ... on 26 Feb, 2026 06:03 PM
Toolbox shrink data is not documented as such. It removes internal data change logs that are not needed. It does not remove any 'real' data.
5 Posted by wisemanja on 28 Feb, 2026 07:09 PM
Thanks for that.
Part of the problem I have is that I use many categories. Although I have deactivated many of them already, I have a total of about 134 in my system of which only about 70 are currently active. When I go to do anything where I need a list of categories (such as the pull down menu in the category field of a transaction) about half of the list is all useless greyed out list items.
And when I complete all reconciliations prior to a particular year, I really don't want any changes (intended or accidental) from 8 years ago altering my current data that I am working on.
In other programs I have used I've been able to duplicate my data set, and then with the newly created version I could delete all transaction prior to a given date (usually January 1 of any given year). This would not matter because the system had a way to freeze the December 31 date tallies that would carry forward as "starting balances" into the following years.
Even if I do this all manually in MD, couldn't I just record the December 31 balances and then (after creating the new dataset and removing all of the old transactions) manually enter them all as "starting balances" on the new dataset? What problems would I run into doing this?
Support Staff 6 Posted by Ethan on 28 Feb, 2026 10:01 PM
In answer to your earlier question, marking an account or category as inactive will not affect your previous transactions in any way. That's the main reason to keep the categories there as inactive: all of the data is intact, but the accounts or categories you no longer use are no longer in the way with your daily use.
Also, just to make sure you're aware, when you get the category popup in the register, you can start typing in your category name, and the list will filter down to only items containing what you type. I think this is faster than scrolling, even if you only had a few dozen items in your list.
You can do what you describe for regular bank and credit card accounts, where you essentially just create a new file with the starting balances at the start of the year as you describe. You'll have to switch between the files to make historical reports, and won't be able to compare data across that gap in one file, but that may not be a problem depending on your needs.
The main thing this won't work for are investment accounts. This need specific buy and sell transactions on specific dates, which are also linked to price history. There can be similar issues if you are working with multiple currencies. It depends what applies to your situation, but those are some of the reasons we generally recommend marking things as inactive.
Ethan
Infinite Kind Support
7 Posted by wisemanja on 28 Feb, 2026 11:47 PM
Great Information!
When I use the category popup, I do typically start typing first but some categories have longer prefixes on them that may be shared with multiple other categories, e.g., when using sub-categories. I can type two or three letters and get the pop up where typing the full name takes longer and is subject to mistakes which just ends up in creating new unintended categories. So I typically type 2-4 letters and then instead of using the arrow up/down keys multiple time, I'll just click once with the mouse. (although this leads to another issue I have when the Item I click on with the mouse is not activated but the item above it in the list DOES active--see my other note "Mouse cursor is not correctly identifying item in pulldown menu that will be selected")
It's good to know that I can chop and reset starting points. I don't use investment accounts like that, so it wouldn't be an issue for me. Probably over 90% of the inactive categories I have, have not been used for many years and I would like to just separate all that stuff from what I'm doing now without loosing the ability to at least go back on occasion and look at old transactions from 10 years ago.
Thanks again for the Info!
8 Posted by dtd on 01 Mar, 2026 12:50 AM
You don't have to start at the beginning of category names, just think of something unique in the category name, and start typing that instead. you'll suddenly be there in moments.
also, could you show a list of categories (like in a register category popup) where inactive categories are shown? I also have many unused categories with 35+ years of data, and the only place i see my inactive categories is in Tools/Categories, but you have to be able to get to them somewhere!