Drag-and-drop image galleries for Obsidian, powered by Bases.
Drop images, plugin generates thumbnails, creates individual templated notes, files them into a Bases-powered gallery. Originals stay wherever they are on disk (your vault stays lean), thumbnails live in the vault, everything is driven by user-configured presets pointing at user-chosen folders.
- Drag-and-drop entry creation with auto thumbnail generation (WebP, PNG, JPG, configurable max width and quality)
- Base-first: every gallery is a
.basefile, with a built-in Base Builder that shows live YAML preview - Vault-lean originals: thumbnails go in your vault, originals are referenced by absolute path (no duplication)
- Multi-gallery support: configure any folder as a gallery with its own template, filters, and frontmatter schema
- Setup wizard: first-run flow picks a folder and configures everything inside it
- Bulk import from a vault folder or an external folder on disk (desktop only for external)
- Templater-aware: auto-detects Templater and hands off, with simple
{{token}}replacement as a fallback - Normalize command: retroactively consolidates drifted image fields onto your canonical field, with dry-run and automatic backups
- Broken-reference detection: banner appears on notes whose original file has moved
- Base-mismatch warning: one-click rebuild if your base file uses a different image field than your preset
- Download
main.js,manifest.json, andstyles.cssfrom the latest release - Copy them into
<vault>/.obsidian/plugins/gallery-forge/ - Settings, Community plugins, enable Gallery Forge
BRAT auto-updates from this repo:
- Install BRAT from community plugins
- BRAT settings, "Add Beta plugin"
- Enter
Ephox1/gallery-forge
Not yet submitted. Coming once the plugin has been beta-tested.
- Enable the plugin. You see a welcome modal.
- Click Create my first gallery. The wizard walks you through:
- Pick a folder in your vault
- Confirm subfolder layout (Notes, Thumbnails, base file)
- Choose a template: file, inline, or the built-in default
- Pick an existing
.basefile or generate one via the Base Builder - Set fields: canonical image field, name field, categories, statuses, auto-tags
- After the wizard, the right sidebar shows the drop zone. Drag images in.
- 1 file: single metadata modal (name, category, status, tags, advanced frontmatter)
- 2+ files: batch modal with a per-row table and "apply to all" shortcuts
Names are pre-filled from the filename, title-cased, with underscores and hyphens replaced with spaces. You can edit freely before confirming.
Gallery Forge auto-detects the Templater plugin. If your template contains <% %> syntax and Templater is installed, the plugin creates the note, hands it to Templater for processing, then runs {{token}} replacement on the result.
If Templater is not installed, <% %> syntax passes through unchanged. Only the simple {{token}} replacement runs.
| Token | Replaced with |
|---|---|
{{name}} |
Entered name |
{{thumb_path}} |
Vault-relative thumb path |
{{original_path}} |
Absolute path to original |
{{date}} |
Today (YYYY-MM-DD) |
{{iso_date}} |
Today (ISO 8601) |
{{category}} |
Selected category |
{{status}} |
Selected status |
{{tags}} |
Comma-separated tags |
Frontmatter injection always runs regardless of Templater, setting the canonical image field, name field, original-path, status, category, created-date, and merging tags.
Command: Gallery Forge: Normalize existing notes
Walks every note under a preset's notes folder and consolidates drifted image fields onto the canonical field. Useful when existing notes have inconsistent frontmatter.
- Dry run is the default. You must explicitly toggle it off to write changes.
- Creates a timestamped backup folder before writing.
- Handles
obsidian://URL values, wikilink embeds ([[img.png]]), pipe-display syntax ([[img.png|300]]), and absolute OS paths. - De-prioritizes auto-thumbnail artifacts (
thumbnails/resized/*_hash.webp). - Optional "clear drifted fields" sets fallback values to
""without removing keys.
Restore any run with Gallery Forge: Restore from backup.
Every gallery is a .base file. The Base Builder gives you:
- View type (cards or table), name, image field, image fit, aspect ratio
- Filter expression with common filter shortcuts
- Sort field (file.* or any frontmatter field) and direction
- Live YAML preview before saving
- Refuses to overwrite existing base files without confirmation
- TROUBLESHOOTING.md: common issues with reproductions and fixes
- SUPPORT.md: how to file a useful bug report
- docs/POSTMORTEM-base-file-silent-failure.md: example of how a tricky bug was diagnosed in this plugin
Will this duplicate my original images? No, the default original handling is "reference external path only." The thumbnail is copied into your vault; the original's absolute path is stored in frontmatter. You can switch to copy or move mode per-preset if you prefer everything inside the vault.
What happens if I move or delete the original? The thumbnail and note continue to exist. When you open the note, a banner appears noting the broken path, with a browse button to point at a new location.
Can I use this with my existing .base file?
Yes. Pick "Use existing base file" in the wizard. Make sure its image: line uses note.{yourCanonicalField}. The plugin warns you on load if there is a mismatch.
Does it work on mobile? Core drop flow and in-vault bulk import work. External folder picker requires Electron (desktop).
git clone https://github.com/Ephox1/gallery-forge.git
cd gallery-forge
npm install
npm run dev # watch mode
npm run build # production buildCopy main.js, manifest.json, and styles.css to your vault's .obsidian/plugins/gallery-forge/ to test.
Issues and PRs welcome. Please:
- File bugs using the bug report template
- Test on a scratch vault before opening a PR
- Keep changes minimal and focused
MIT. See LICENSE.