awesomedog875 downloadsWord-style Markdown formatting toolbar for Obsidian — bold, underline, highlight, color, headings, tables, callouts, emoji picker and 100+ one-click commands.
Bold, italic, underline, highlight, font, headings, lists, tables, callouts and emoji — by clicking buttons instead of typing Markdown syntax.
No AI. No network. No telemetry. No accounts.
🌍 English · 简体中文 · 繁體中文 · 日本語 · 한국어 · Deutsch · Français · Español · Русский — the plugin UI matches your Obsidian language.
Awesome Format Bar is a formatting toolbar (ribbon) plugin for Obsidian. It overlays a familiar, Word-like editor toolbar on top of your notes, so everyday formatting is one click away — while your vault stays 100% plain text.
Everything the toolbar writes is standard Markdown, Obsidian-flavoured Markdown, or — where Markdown simply has no syntax (underline, superscript, subscript, text alignment, text color, font family, font size) — a small amount of inline HTML that Obsidian renders natively.
Looking for an Obsidian toolbar plugin, format bar, editor toolbar, rich-text / WYSIWYG-style editing bar, Markdown formatting buttons, emoji picker, table editor, or a Microsoft Word-like ribbon for Obsidian? That's this plugin.
Obsidian is fast if you already speak Markdown. For everyone else — students, writers coming from Word or Google Docs, teams onboarding new note-takers — the syntax is a wall.
.md files.| Toolbar positions | Top ribbon, floating bar above the selection, fixed bottom bar — combine freely |
| Commands | 153 built-in, 139 available in the command palette for custom hotkeys |
| Tabs | Home · Insert · View · Table · Utilities · Pinned |
| Callouts | All 12 Obsidian callout types in one drop-down |
| Emoji & symbols | ~2,150 emoji, kaomoji and symbols, fully offline |
| Table editing | Insert/delete/move rows & columns, align, sort, remove duplicate rows, transpose, re-format, convert to text, paste as table, copy as CSV |
| Image editing | align, size, alt text, caption, reset picture, convert syntax |
| Custom buttons | Pinned tab — pin any command (core, this plugin's, or another plugin's) with your own icons and groups |
| Setup required | None. Theme-aware, zero configuration |
| Requires | Obsidian 1.13.7+ |
Each position is toggled independently, so you can run just the floating bar, just the ribbon, or all three.
Bold, italic, underline, strikethrough, inline code, inline math, highlight (with color), font color, font family, font size, clear formatting, change case, headings 1–6, bullet / numbered / task lists, quotes, indentation, horizontal rules, undo/redo, find & replace, paragraph alignment — grouped exactly where a Word user expects them.
Pictures get their own group on Insert: Image Size ▼ sets a width of 100–600 px — or restores the file's own size — All Images ▼ applies the same width to every picture in the note at once, Alt Text writes the alt text and selects it, and Caption writes a caption line under the picture and selects it, ready to type over. Reset Picture drops the width and the alt text again, and Convert Syntax swaps a picture between ![[a.png]] and .
One Callout button opens a drop-down with note, abstract, info, tip, success, question, warning, failure, danger, bug, example and quote. No more looking up > [!tip] syntax.
A searchable Emoji & Symbols panel with three sources — emoji, kaomoji and typographic symbols — bundled with the plugin. Inserts at the caret or over the selection as a single undo step, keeps a Frequently used group per source, and stays open for inserting several characters in a row.
Insert and delete rows/columns, move rows and columns, align columns left/center/right, sort rows A to Z or Z to A, remove duplicate rows, transpose tables, re-format (pretty-print) the current table or every table in the note, and convert a table back to delimited text — plus Paste as Table, which turns tab- or comma-separated clipboard text (straight out of Excel, Numbers or Google Sheets) into an aligned Markdown table, and Copy as ▼ for the way back out — as TSV, CSV, JSON or Markdown.
Put the caret inside a table and the ribbon switches to the Table tab by itself; pick another tab and it stays where you put it. In Source mode, Enter moves to the row below (adding one at the end) and Tab / Shift+Tab walk the cells, adding a column past the right edge.
Pinned is the one part of the toolbar you arrange yourself. It turns the toolbar into your own launcher: pick any command from the command palette (Obsidian core, another community plugin, or this plugin), choose an icon, give it a group, and drag to reorder. If the source plugin is disabled, the button simply greys out — your pin is kept.
The five built-in tabs cover what most people use often. The one or two commands you can't live without usually fall outside that set — so rather than making you rebuild five tabs to reach them, the toolbar gives you a sixth one that is entirely yours, and never overwrites it on update.
Live Preview/Source (flip the pane between rendered and raw Markdown), Show Whitespace (dots for spaces, arrows for tabs, orange markers for NBSP / ideographic / EN & EM spaces), Show Line Numbers, Readable Line Length, Navigation Pane (Obsidian's Outline), Zoom In / Out / 100%, Split Right / Down, Collapse / Expand (All), Focus Mode (collapse both sidebars), Zen Mode (true fullscreen) and Typewriter Mode (caret line parked mid-editor, highlighted, with the rest dimmed).
Table of Contents writes your note's outline after the paragraph at the caret: a bold **Table of Contents** title, then one nested - [[#Heading|Heading]] link per heading. Headings inside a code fence or quoted into a callout are ignored. It's a snapshot, not a live field — re-run it after editing and delete the old one.
Merge Lines, Split Lines (at the punctuation the selection uses most), Reverse Lines — none of which cross a blank line or a code fence — and Duplicate (a copy of the caret's line below it, or of the selection right after it — VS Code's Duplicate Selection). Plus Sort List (level by level, children and bodies preserved, ordered items renumbered) and Sort Headings (reorders the outline and carries every section's body along).
Clean Up gathers the tidy-ups people otherwise do by hand into one menu: Remove Trailing Spaces, Collapse Blank Lines, Convert Bare URLs, Normalize Emphasis & Strong and Normalize Bullet Style.
The built-in layout is fixed and inherits your active Obsidian theme in light and dark mode, so it looks native on install and keeps looking that way. The one thing you arrange is your Pinned tab.
That is a deliberate trade-off, not a missing feature. A toolbar that lets you rebuild every button also has to ship a drag-and-drop editor, an icon browser, an import/export format and a settings page to hold it all — and that machinery is where toolbar bugs actually come from: buttons that won't reorder, layouts reset by an update, settings panels that hang. A fixed layout has none of it. You get a toolbar that works immediately and keeps working, and the escape hatch for the commands that are genuinely yours is Pinned.
139 of the 153 commands are registered in the command palette, so you can assign your own keyboard shortcuts. (Drop-down containers and the Emoji & Symbols panel are toolbar-only.)
Available whenever the cursor is inside a table:
Your own commands, with your own icons. See Getting started.
| Source | Entries (approx.) | Example groups |
|---|---|---|
| Emoji | ~1,870 | Smileys & People, Animals & Nature, Food & Drink, Objects, Flags |
| Kaomoji | ~70 | Emotion, Animal, Behavior, People, Holiday |
| Symbols | ~200 | Arrows, Math, Typographic, Currency, Enclosed, Dingbats |
All data ships inside the plugin, so the picker works completely offline.
From Community Plugins (recommended)
Settings → Community plugins → Browse → search for "Awesome Format Bar" → Install → Enable.
⋯ overflow menu, which also lists every other command grouped by tab, and your pinned ones.| Section | Contents |
|---|---|
| Toolbar | Independent toggles for Top / Following / Fixed |
| Pinned | Open the Pinned manager to add commands, choose icons, manage groups, reorder, and delete |
| Table | Keyboard navigation: Enter moves down a cell, Tab / Shift+Tab move between cells, Tab at the right edge adds a column and Enter on the last row adds a row; pad cell width with spaces; sort on header click in Reading view (never modifies the file) |
main.js, manifest.json, styles.css.Does this turn Obsidian into a WYSIWYG or rich-text editor?
No — and that's the point. It's a toolbar on top of Obsidian's own editor. Your files remain plain Markdown.
Do I have to learn Markdown syntax to use Obsidian now?
No. Bold, headings, lists, links, tables, callouts, code blocks and math are all buttons.
What exactly gets written into my notes?
Standard Markdown and Obsidian-flavoured Markdown. Only where Markdown has no syntax — underline, superscript, subscript, paragraph alignment, text and highlight colors, font family and font size — does the plugin emit small, standard inline HTML tags, which Obsidian renders natively.
Can I keep using my keyboard shortcuts?
Yes. 139 of the 153 commands appear in the command palette and can be bound to any hotkey.
I'm a keyboard person — can I hide the toolbar completely?
Yes, and nothing is lost by doing it. Switch off all three positions (Top / Following / Fixed) in Settings → Awesome Format Bar and the plugin leaves zero footprint on the screen: no ribbon, no floating bar, no bottom bar. Every one of the 139 palette-registered commands still runs, from the command palette or from a hotkey you assign in Settings → Hotkeys — including commands Obsidian has no built-in shortcut for, such as font color, highlight color, change case, callouts, table sorting and the line utilities. Think of it as an optional keyboard-only layer you can switch on whenever the mouse starts feeling slow.
Can I add buttons for commands from other plugins?
Yes — that's the Pinned tab. Pin any command from the palette and choose an icon. If the owning plugin is disabled, the button greys out and the pin is preserved.
Does the emoji picker need an internet connection?
No. All ~2,150 emoji, kaomoji and symbols are bundled with the plugin.
Does the plugin use AI, or phone home in any way?
No. There is no AI feature, no API key, no network request, no analytics and no telemetry anywhere in the code — the plugin reads and writes your local .md files and nothing else. The emoji library is bundled, so it works on a plane.
Does sorting a table in Reading view change my file?
No. Reading-view header-click sorting is display-only and never modifies the note.
How do I center a picture, or change its size?
Put the caret on the picture's own line. Align Center (Home · Paragraph) centres it — a picture alone on a line is a paragraph, so no separate command is needed — and Image Size ▼ (Insert · Picture) sets its width to 100–600 px, or Original Size to give the file's own size back; a width is written after an alias rather than over it, so ![[logo.png|Company logo]] becomes ![[logo.png|Company logo|300]]. All Images ▼ applies the same width to every picture in the note at once, from anywhere in the note. Alt Text writes the alt text and selects it, Caption writes a caption line underneath and selects it, and Reset Picture drops both again. Convert Syntax swaps the picture between ![[a.png]] and . Everything is written as plain Obsidian syntax, so the note reads the same without the plugin.
Can I hide the toolbar when I want a clean screen?
Yes — toggle any position off in settings, or all three to hide it entirely (see the keyboard question above for what still works).
Is it configurable?
Deliberately minimal — and that's the point. The built-in layout is fixed and theme-aware so it always looks native, never needs re-arranging, and never resets itself on update. Everything you'd actually want to change lives in one place: the Pinned tab, where you add any command, pick its icon, group it and drag it into order. The reasoning is in Features → Zero configuration, theme-aware.
npm install # install dependencies
npm run build # typecheck + test + production build
npm run deploy -- /path/to/vault # copy main.js, manifest.json, styles.css into a vault
The release consists of exactly three files: main.js, manifest.json and styles.css.
npm version patch # bump package.json, manifest.json, versions.json; commit and tag
git push origin main --follow-tags # push the commit and the tag
npm version requires a clean working tree. The tag carries no v prefix — it has to equal the version in manifest.json, or the release workflow rejects it.
Pushing the tag runs .github/workflows/release.yml, which builds the plugin and opens a draft release with main.js, manifest.json and styles.css attached. Publish the draft to make the version available.
Obsidian toolbar plugin · Obsidian formatting toolbar · Obsidian format bar · Markdown toolbar · Markdown formatting buttons · Word-like ribbon for Obsidian · rich text toolbar · WYSIWYG-style editing bar · editor toolbar · floating selection toolbar · text color and highlight in Obsidian · underline / superscript / subscript in Markdown · text alignment · callout picker · emoji picker · kaomoji · symbol picker · Markdown table editor · sort table · paste as table · table of contents generator · pin commands · beginner-friendly Obsidian · no-syntax Markdown editing
其他语言 / Other languages: