Disclaimer
Is this project open source? Yes
Is this project completely free? Yes
Is this project vibe-coded beyond the author’s ability to comprehend how it works? Yes
Community Directory:[Bases Toolbox](https://community.obsidian.md/plugins/bases-toolbox)
Bases is great, but editing the data behind a base, meaning properties spread across a lot of notes, still comes down to a lot of one-note-at-a-time clicking. Bases Toolbox is a grab-bag of tools that make working with Bases and frontmatter properties faster and less tedious, without so much risk of breaking things. Everything writes through Obsidian’s normal APIs, most changes can be undone from a History tab, and nothing touches the network. No telemetry, it all runs locally.
It came out of helping people move off spreadsheets. I’d built some web tools to import and export CSVs for shared record-keeping on a network drive, and once that data landed in Obsidian Bases a pile of small gaps showed up: imported values that didn’t match each other, PDFs with no frontmatter, no clean way to merge duplicate notes. Each tool below scratches one of those itches. I also went through the forum for existing requests, so a few of these might look familiar.
Heads up: this plugin was built with Claude Opus 4.8 (so, AI-assisted) and it’s been tested a fair bit but not battle-hardened. Please back up your vault first (and the original CSV, if you’re importing). Most actions can be undone from the History tab, but back up anyway.
There’s a lot in here, so here are the ones people tend to reach for first.
Property index
An always-complete, searchable list of every frontmatter property in your vault, with each value it takes and the notes using it, so you can review, rename, delete, or open files. Unlike the Bases filter dropdown, it never “forgets” a property.
Find & replace property values
Change a property’s value across the whole vault: pick a property, pick the value (or “all values”), preview exactly which files will change as a checklist, and apply only the ones you tick. Fully undoable, and it won’t clobber notes you’ve edited since you opened the preview.
Conditional formatting
Color Bases rows or cells by their values using rules you define. Turn a row red when Status = blocked, say, or highlight duplicate values so they’re easy to spot. It’s live, with no reload.
Roomy property editor (and create-from-base)
A comfortable form for a note’s frontmatter, as an alternative to the cramped inline and Bases popup editors. You get type-aware fields, [[wikilink]] autocomplete, add and remove, and a rename field. Launch it from a base and it borrows that view’s columns, so a new note slots straight in.
Property format doctor
Obsidian flags type-mismatched values but “fixes” them destructively, sometimes erasing them outright. The doctor instead lists every mismatch, explains what each type expects, pre-fills a safe suggestion, and never erases anything. All of it can be undone.
…and a lot more
- Rollups — aggregate linked notes into a real property (count, sum, avg, min, max).
- Merge notes & duplicate finder — a frontmatter-aware merge, with bodies combined in creation order, fully undoable. I built this after Note Refactor erased frontmatter on a merge and I had to reconcile a coworker’s client list by hand.
- CSV import/export — turn a CSV into notes, or export a base or a folder to CSV (with a readable summary of what CSV can’t hold).
- Companion notes — make non-Markdown files like PDFs and images queryable in Bases, so your vet’s PDF invoices can live in
Attachments/and still show up next to the pet notes in a base. - Allowed values — pin a property’s allowed set and audit anything outside it.
- Convert / fork a property — normalize dates, or wrap and unwrap wikilinks, either in place or into a synced second property.
- Filter quick-toggle — turn a base’s filters on and off without deleting them (disabled ones are remembered), to narrow results for a moment.
- Bulk edit base results, a cell zoom editor, embedded-base display flags (
bases-no-toolbar, fixed height), multiline list cells, a number-input guard (stops numbers changing when you hit arrow keys or scroll), inline-field → property migration, metadata stamping, and a launcher with favorites for all of it.
Bonus: a Bases “XLOOKUP”
This isn’t a plugin feature, just a formula recipe I lean on. Bases has no built-in relational lookup, but if a property links to another note, you can pull that note’s properties in:
formulas:
# XLOOKUP(accountNumberCell, AccountsNumbersColumn, BankNamesColumn)
bank: account.asFile().properties.bank
# XLOOKUP(accountNumberCell, AccountsNumbersColumn, AccountHolderNamesColumn)
# property names with spaces/symbols → bracket syntax:
holder: note["Account"].asFile().properties["Account Holder Name"]
So if each Transaction links to an Account, this surfaces the Account’s bank name or holder as a column. It’s in the README too.
Install
Requires Obsidian 1.9+ (the version that has Bases).
- Community store: Search “Bases Toolbox” in Settings → Community plugins, or install from the store page.
- BRAT (beta): add the repo.
Notes
- Requires Bases (Obsidian 1.9+).
- Destructive actions like merge, delete, and revert are confirmed before they run and, where possible, recorded to History so you can undo them.
- Open-source, no network, no telemetry. Feedback and bug reports are very welcome. It’s early, and there’s a lot of surface area.