John84 downloadsConservatively repairs common Markdown formatting errors locally, with previews and recovery.
Markdown Formatter is a conservative, local-only Obsidian plugin that repairs common formatting mistakes produced by AI assistants and copied Markdown. It always reports what it changed and skips content that cannot be repaired with high confidence.
\\(...\\) and \\[...\\] LaTeX delimiters to Obsidian-compatible math.The plugin has no network access and does not send note content to an external service.
See README_CN.md for Chinese usage and installation instructions.
Until the plugin is listed in the official Community Plugins directory, install it with BRAT:
AnotherFlower/obsidian-markdown-formatter and enable Markdown Formatter.BRAT downloads the plugin from this repository's GitHub releases. Install it independently on every device; do not copy or sync .obsidian/plugins/anotherflower-markdown-formatter/ through a vault sync service.
The plugin will also be submitted to Obsidian's Community Plugins directory. Once approved, install it directly from Settings > Community plugins. Obsidian downloads release assets from GitHub, so the installation remains independent from vault content sync.
For development, clone this repository outside the vault, install dependencies, and build:
npm install
npm run build
The build produces dist/main.js, dist/manifest.json, dist/styles.css, and dist/versions.json. GitHub Releases publishes these files; do not commit dist/.
Use the command palette:
std%3A%3Aatomic_flag.md to std/atomic_flag.md, creating missing folders and skipping conflicts.The settings tab controls individual rules, preview behavior, batch limits, history retention, and line-ending preservation.
Path normalization is a separate, explicit operation. It decodes URL-encoded Markdown file names, converts :: namespace separators into folders, and maps Windows-invalid characters to readable full-width characters. The note body is not changed. Existing targets, malformed encodings, unsafe paths, and duplicate targets are skipped and reported. Obsidian's file manager is used so recognized internal links can be updated.
npm install
npm run typecheck
npm test
npm run build
The repair engine is independent of Obsidian and is covered by deterministic fixture-style tests. The plugin deliberately does not infer tables or rewrite ordinary prose. Ambiguous formulas, pipe text, and protected code/frontmatter are reported or left unchanged.
MIT