# Awesome Format Bar — a Word-style Markdown formatting toolbar for Obsidian
> 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.**
[](#compatibility)
[](https://github.com/AwesomeDog/obsidian-awesome-format-bar/commits/main)
[](https://obsidian.md)
[](https://github.com/AwesomeDog/obsidian-awesome-format-bar/releases/latest)
[](https://obsidian.md/plugins?id=awesome-format-bar)
[](#full-command-reference)
[]()
[](https://github.com/AwesomeDog/obsidian-awesome-format-bar/stargazers)
🌍 **English** · [简体中文](docs/i18n/README.zh.md) · [繁體中文](docs/i18n/README.zh-TW.md) · [日本語](docs/i18n/README.ja.md) · [한국어](docs/i18n/README.ko.md) · [Deutsch](docs/i18n/README.de.md) · [Français](docs/i18n/README.fr.md) · [Español](docs/i18n/README.es.md) · [Русский](docs/i18n/README.ru.md) — the plugin UI matches your Obsidian language.
**Awesome Format Bar** is a **formatting toolbar (ribbon) plugin for [Obsidian](https://obsidian.md)**. 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, drop cap) — 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.*
---
## Table of contents
- [Why a formatting toolbar in Obsidian?](#why-a-formatting-toolbar-in-obsidian)
- [At a glance](#at-a-glance)
- [Features](#features)
- [Full command reference](#full-command-reference)
- [Installation](#installation)
- [Getting started](#getting-started)
- [Settings](#settings)
- [Compatibility](#compatibility)
- [FAQ](#faq)
- [Development](#development)
- [Release](#release)
- [Keywords](#keywords)
---
## Why a formatting toolbar in Obsidian?
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.
- **No syntax to memorise.** Select text, click **Bold**. That's it.
- **Word terminology you already know.** Home / Insert / View / Table tabs, "Clear Formatting", "Change Case", "Navigation Pane".
- **Discover what Obsidian can do.** Callouts, block references, embeds, math blocks and tags all get a button — features many users never find in the syntax.
- **Do what Markdown can't.** Underline, superscript, subscript, paragraph alignment, text color and font family/size, written as clean inline HTML — plus 16 highlight colors, six of which Obsidian renders natively, with no HTML at all.
- **Plain text forever.** No proprietary format, no database, no lock-in — your notes are still just `.md` files.
- **Offline & private.** No network calls, no accounts, no telemetry. The ~2,150-entry emoji library ships inside the plugin.
- **Your own launcher, if you want one.** The **Pinned** tab holds any command you pick — core, this plugin's, or another plugin's — so the toolbar bends to you without turning into a settings project.
- **Keyboard-friendly too.** Switch every toolbar position off and the interface disappears completely — all 172 palette-registered commands stay available and can be bound to your own hotkeys. And while the toolbar *is* on screen, hovering a button shows the shortcut currently bound to that command in its tooltip — the one you assigned, or Obsidian's own default. Rebind it in **Settings → Hotkeys** and the tooltip follows, with no restart.
---
## At a glance
| | |
| --- | --- |
| **Toolbar positions** | Top ribbon, floating bar above the selection, fixed bottom bar, editor menu (right-click) — four independent switches, combine freely |
| **Commands** | **190** built-in, **172** 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 |
| **Charts** | 24 Mermaid diagram types — flowchart, sequence, class, state, ER, Gantt, pie, mindmap, timeline, Git graph, Kanban, architecture, C4, Sankey and more — inserted as a ready-to-edit code block |
| **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** from Excel/Numbers/Sheets, copy as TSV / CSV / JSON |
| **Image editing** | align, size (single picture or **every picture in the note at once**), alt text, caption, reset picture, convert `![[…]]` ⇄ `` |
| **Reading & focus** | Live Preview ⇄ Source, Focus Mode, Zen Mode, Typewriter Mode, Show Whitespace, line numbers, zoom, split, collapse / expand all |
| **Line & text utilities** | Merge / Split / Reverse Lines, Duplicate, Sort List, Sort Headings, Smart Punctuation, CJK Spacing, and **Clean Up** (trailing spaces, blank lines, bare URLs, invisible characters, emphasis & bullet style) |
| **Extras** | Table of Contents, Format Painter, Drop Cap, Footnote, Block Reference, Math Block, Date and Time |
| **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 |
---
## Features
### 🧭 Four positions, freely combined
- **Ribbon (Top)** — the full, tabbed toolbar pinned above the editor. *Default.*
- **Following** — a compact bar that floats above your current selection, like the selection toolbar in Word or Google Docs. **The Following bar never covers what you are editing.**
- **Fixed** — a compact bar pinned to the bottom of the editor.
- **Editor menu** — the whole command table as one submenu of the note's right-click menu.
Each of the four is toggled independently, Desktop and Mobile have their own set.
### 🅰️ 190 formatting commands in a familiar layout
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 · Illustrations**: **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 ``. **Chart ▼** writes a Mermaid diagram, one item per diagram type — Obsidian renders all twenty-four and gives no command to start one.
### 💬 Callout picker — all 12 Obsidian callout types
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.
### 😀 Offline emoji, kaomoji & symbol picker (~2,150 entries)
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.
### 📊 Markdown table editor
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.
### 📌 Pin any command — including other plugins' commands
**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.
### 👁️ Reading, focus and outlining tools
**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, and a marker standing in for zero-width and control characters — ZWSP, soft hyphen, word joiner, BOM — that would otherwise be invisible), **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 in one click
**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.
### 🧹 Line & list utilities
**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**, **Normalize Bullet Style** and **Remove Invisible Characters**.
### 🎨 Zero configuration, theme-aware
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**.
---
## Full command reference
172 of the 190 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.)
### Home
- **Clipboard** — Paste, Cut, Copy, Format Painter, Paste as Plain Text, Paste URI as Link
- **Font** — Font Family, Font Size, Bold, Italic, Underline, Strikethrough, Subscript, Superscript, Inline Code, Inline Math, Highlight, Highlight Color, Font Color, Clear Formatting, Change Case
- **Paragraph** — Bullet / Numbered / Task List, **Number Headings ▼** (1. 1.1. 1.1.1., 1) a) i), I. A. 1., No Numbering), Quote, Decrease / Increase Indent, Renumber List, Sort Lines, Move List Item Up / Down, Swap Line Up / Down, Align Left / Center / Right / Justify, Horizontal Rule
- **Styles** — Heading 1–6, Remove Heading
- **Editing** — Undo, Redo, Find and Replace, **Select ▼** (Select All, Select Text with Similar Formatting)
### Insert
- **Tables** — Table, Convert Text to Table, Paste as Table
- **Illustrations** — Attach File, Image Size ▼ (100 px, 200 px, 300 px, 400 px, 600 px, Original Size), All Images ▼ (All Images 100 px, All Images 200 px, All Images 300 px, All Images 400 px, All Images 600 px, All Images Original Size), Alt Text, Caption, Reset Picture, Convert Syntax, Chart ▼ (Flowchart, Sequence Diagram, Class Diagram, State Diagram, Entity Relationship, User Journey, Gantt, Pie Chart, Quadrant Chart, Requirement Diagram, Git Graph, Mindmap, Timeline, Sankey Diagram, XY Chart, Block Diagram, Architecture Diagram, Packet Diagram, Kanban Board, Radar Chart, Treemap, C4 Diagram, Ishikawa Diagram, Venn Diagram)
- **Links** — Internal Link, External Link, Embed, Tag, Block Reference
- **Comments** — Comment
- **Text** — Callout ▼ (Note, Abstract, Info, Tip, Success, Question, Warning, Failure, Danger, Bug, Example, Quote), Code Block, Date and Time, Drop Cap
- **Symbols** — Math Block, Emoji & Symbols
- **Reference** — Table of Contents, Footnote
### View
- **Views** — Live Preview/Source (toggle the pane between Live Preview and raw Markdown)
- **Immersive** — Focus Mode, Zen Mode, Typewriter Mode
- **Show** — Show Whitespace, Show Line Numbers, Readable Line Length, Navigation Pane (Obsidian's Outline)
- **Zoom** — Zoom In, Zoom Out, 100%
- **Window** — Split Right, Split Down
- **Outlining** — Collapse, Expand, Collapse All, Expand All
### Table
Available whenever the cursor is inside a table:
- **Rows & Columns** — Delete ▼ (Delete Rows, Delete Columns, Delete Table), Insert Rows Above / Below, Insert Columns to the Left / Right, Move Row Up / Down, Move Column Left / Right
- **Format** — Format Tables ▼ (Format Table, Format All Tables)
- **Alignment** — Align Column Left / Center / Right
- **Data** — Sort Rows ▼ (Sort Rows A to Z, Sort Rows Z to A), Remove Duplicate Rows, Transpose Table, Convert Table to Text, Copy as ▼ (TSV, CSV, JSON, Markdown)
### Utilities
- **Lines** — Merge Lines, Split Lines, Reverse Lines, Duplicate. Merge Lines joins a run of lines into one; Split Lines breaks them at the punctuation the selection uses most; Reverse Lines flips the order of each run; Duplicate copies the caret's line below it, or the selection right after it. None of the four crosses a blank line or a code fence.
- **Sort** — Sort List, Sort Headings. Sort List sorts a list level by level — an item keeps its own body and its own children, and ordered items come out renumbered. Sort Headings reorders each level of the note's outline and carries every section's body along with it.
- **Normalize** — Smart Punctuation, CJK Spacing, Clean Up ▼ (Remove Trailing Spaces, Collapse Blank Lines, Convert Bare URLs, Normalize Emphasis & Strong, Normalize Bullet Style, Remove Invisible Characters).
### Pinned
Your own commands, with your own icons. See [Getting started](#getting-started).
### Emoji & Symbols panel
| 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.
---
## Installation
**From Community Plugins (recommended)**
Settings → **Community plugins** → **Browse** → search for **"Awesome Format Bar"** → **Install** → **Enable**.
---
## Getting started
1. Open **Settings → Awesome Format Bar** and toggle the four positions you want: **Top**, **Following**, **Fixed** and **Editor menu**. Desktop and Mobile have their own set of switches.
2. The **Ribbon (Top)** has six tabs; the last one, **Pinned**, holds the commands you pin yourself. While it is empty it shows an add hint; use the edit button to manage commands and groups.
3. The **compact bars** (Following / Fixed) carry a fixed subset of commands; buttons that don't fit the available width collapse into the `⋯` overflow menu, which also lists every other command grouped by tab, and your pinned ones.
4. Open the **Pinned** edit button to add commands, choose icons, create or rename groups, drag to reorder, move commands, or delete them. Settings keeps a fallback entry for the same manager. Pinned commands behave exactly like their command-palette counterparts.
5. Prefer the keyboard? Turn **all four toggles off** and the plugin adds nothing to your screen at all, while all **172 palette-registered commands** keep working and can be bound to your own hotkeys in **Settings → Hotkeys**. In other words: you can use it as a pure command/hotkey pack and never click a button.
---
## Settings
| Section | Contents |
| ----------- | ------------------------------------------------------------------------------------------------------------------------ |
| **Toolbar** | Independent toggles for Top / Following / Fixed / Editor menu — one set for Desktop, one for Mobile |
| **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) |
---
## Compatibility
- Obsidian **1.14+**
- Works with the Markdown editor and adapts to your active theme in both light and dark mode.
- No AI, no network access, no accounts, no telemetry — everything runs locally.
- The release is exactly three files: `main.js`, `manifest.json`, `styles.css`.
---
## FAQ
**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. Six of the 16 highlight colors use Obsidian's own colored-highlight syntax, so they stay plain Markdown. Only where Markdown has no syntax — underline, superscript, subscript, paragraph alignment, text color, the other ten highlight colors, font family and font size, drop cap — does the plugin emit small, standard inline HTML tags, which Obsidian renders natively.
**Will a font I pick look the same on another device?**
The five generic families do — every machine resolves them. A named font renders only where it is installed, so each is written with a fallback: on a machine without it the note still reads as a serif, a sans or a mono. On desktop the drop-down also lists the fonts installed on the machine you are on, and dims those it does not have.
**Can I keep using my keyboard shortcuts?**
Yes. 172 of the 190 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 four positions (**Top / Following / Fixed / Editor menu**) in **Settings → Awesome Format Bar** and the plugin leaves zero footprint on the screen: no ribbon, no floating bar, no bottom bar, no right-click entry. Every one of the **172 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 · Illustrations) 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 four 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*.
---
## Development
```shell
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
npm run mobile -- /path/to/vault --size=phone
npm run mobile -- /path/to/vault --size=tablet
```
The release consists of exactly three files: `main.js`, `manifest.json` and `styles.css`.
---
## Release
```shell
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.
---
## Keywords
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 · format painter · pin commands · beginner-friendly Obsidian · no-syntax Markdown editing
**其他语言 / Other languages:**
- Obsidian 工具栏插件、格式栏、富文本工具栏、Markdown 快捷按钮、表情符号选择器、表格编辑
- Obsidian 工具列外掛、格式列
- Obsidian ツールバー・書式設定バー・絵文字ピッカー
- Obsidian 툴바 · 서식 도구 모음
- Obsidian Symbolleiste / Formatierungsleiste
- Barre d'outils / barre de mise en forme pour Obsidian
- Barra de herramientas / barra de formato para Obsidian
- Панель инструментов / панель форматирования для Obsidian