Enhance Bases' Usability Experience with Bases Toolbox

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.
1 Like

It looks like it’s not detecting Bases properly, so some functions don’t work. I am working on a fix. It’ll either be fixed via dispatch in a few minutes or within several hours. Sorry about that.

Edit: I got it to work, but only in the insider release.

1 Like

This looks like an incredible quality-of-life plugin! The gap between managing massive tabular data in spreadsheets versus handling decentralized markdown files in Obsidian is real, and it usually takes a ton of friction to bridge it.

The Property Format Doctor alone sounds like a lifesaver. Obsidian’s default behavior of aggressively stripping out mismatched frontmatter types can be terrifying when you’re importing legacy data, so having a safe, non-destructive validation layer is massive.

Also, thank you for sharing that Bases “XLOOKUP” formula recipe! The lack of native relational lookups between notes has been a major pain point for setting up true relational databases in Obsidian. Using .asFile().properties is a brilliant, lightweight workaround that keeps page weight down without needing heavy community script alternatives.

Looking forward to backing up the vault and putting the Find & Replace preview tool through its paces. Awesome work, especially for a vibe-coded, AI-assisted build—Opus definitely helped you nail the exact friction points the community has been complaining about!

1 Like

I’m afraid some features won’t work until the next major public release of Obsidian as it was built and tested with the latest insider build and the way that Bases are detected is allegedly different from 1.12.7 and 1.13 and on.

The other features should still, work though. It was embarrassing for the team to not be able to use the plugin but they’ll be able to within a few months. So far things look promising with the insider build.

Everything was fixed yesterday. Should work across the stable and insider releases. My apologies for the misunderstanding.

Also, here’s what should be the changelog since I posted this thread:

BASES TOOLBOX — WHAT’S NEW BY CATEGORY

CONDITIONAL FORMATTING
[0.1.4–0.1.6, 0.1.23, 0.1.29] Full rule editor — name your rules, custom colors, autocomplete, de-dupe detection
[0.1.30, 0.1.2–0.1.3] Scope rules to specific bases, with search/folder grouping to find them fast
[0.1.40, 0.1.41] Drag-and-drop reordering with a clean, tidy rule list UI
[0.1.31] Settings tab and sidebar panel stay in sync live — edit either one
[0.1.24, 0.1.14] Duplicate existing rules instead of rebuilding from scratch
[0.1.25] One master switch to disable all formatting at once
[0.1.19–0.1.20] Colors survive column renames/reorders
[0.1.8] New “is duplicated” operator

CSV IMPORT/EXPORT
[0.1.12, 0.1.13] Real import/export workflow — export a base’s current view, drag-and-drop import, built-in properties reference
[0.1.22, 0.1.33] Smarter base handling — name the file, pick a subfolder, and it tells you upfront if it’s creating new vs. reusing
[0.1.32] Documents note-body template variables and which column becomes the title
[0.1.14] .base companion file by default
[0.1.21] “Omit empty values” now off by default

DUPLICATE FINDER
[0.1.9–0.1.10] Core workflow — clickable links, run in tab or window, merge preview, fully revertible
[0.1.34] Pick oldest/newest/longest as the default “note to keep” per merge
[0.1.27, 0.1.39] Smarter scanning — skips date/numeric filenames, exclude folders, autocomplete on filters

LAUNCHER
[0.1.8, 0.1.9–0.1.10] Standalone launcher, opens in its own window
[0.1.26, 0.1.39] Search box with fuzzy matching (dashes/underscores/spaces all equivalent)
[0.1.14] Favorites

PROPERTY INDEX
[0.1.4–0.1.6, 0.1.14] Full sidebar — delete/rename/audit/search properties, edit/create modal, type icons
[0.1.36] Change a property’s type in one shot, converting existing values automatically (undoable)
[0.1.35] Deleting a property now fully removes it from Obsidian, not just clears values

FORMAT DOCTOR
[0.1.4–0.1.6, 0.1.7, 0.1.8] Live preview, persistent “Ignore” list with To-fix/Ignored tabs, type icons

BASE DETECTION
[0.1.16–0.1.20] Rock-solid detection — works from the focused or most-recent tab, no blank rows with multiple bases open, even when the pane isn’t focused

BULK FILE CHANGE HISTORY
[0.1.11, 0.1.28] Renamed from “History” — revert risk warnings and a skipped-files panel after reverting

FORKS & COMPANION NOTES
[0.1.2–0.1.6] Fork management/adoption with smart auto-naming, plus companion notes with metadata stamps

EVERYTHING ELSE
[0.1.15] More resilient merge-revert, reserved-key guards, better export folder scoping
[0.1.7] Move any view to the sidebar
[0.1.38] Bases bug workaround: Filter popover no longer runs off-screen with long values
[0.1.0, 0.1.1] Initial release + early stability fixes

1 Like

As another bug workaround for when you can’t edit formulas on Bases that are on other non-main windows, I also had Claude add the ability to create formula columns.

I thought it was impossible until Claude pointed out that the plugin can just edit the Base file directly. :person_facepalming:

Claude says the formulas are validated through some unofficial way in Obsidian. Still fully offline, of course. There allegedly no dedicated API nor library, but I haven’t checked.

If anyone would like for me to add anything else, please let me know.

I may want to tinker with this, but on the

Scorecard page I see a lot of issues that need clearing up. May not be just linter issues but unread variables, etc. Have a look.

It’s made only by Claude Code and I told it to look at them and it said it was not worth the effort unless it becomes a hard requirement to fix, or it straight out just disagrees with the linter. Obviously it’s just a dumb LLM, so who knows. That said, the plugin works offline.

Edit: FWIW, I had a Fable 5 security review and code review on the entire code base.