A small, reliable utility that provides a canonical list of Markdown file extensions along with helper functions for detecting and working with them.
Designed to be lightweight, predictable, and useful in real-world tooling such as static site generators, content pipelines, and repository automation.
- Canonical list of Markdown extensions.
- Single source of truth (JSON-driven).
- Helper utilities for real-world usage.
- Handles edge cases like:
.mdMDREADME.markdown- file paths (
/docs/file.mkd)
- Zero dependencies.
- Tiny footprint.
npm install @brandonhimpfen/markdown-extensionsimport markdownExtensions, {
isMarkdownExtension,
isMarkdownFile,
normalizeExtension
} from '@brandonhimpfen/markdown-extensions';console.log(markdownExtensions);
//=> ['md', 'markdown', 'mdown', 'mkdn', 'mkd', 'mdwn', 'mkdown', 'ron', 'ronn']isMarkdownExtension('md'); // true
isMarkdownExtension('.md'); // true
isMarkdownExtension('.MD'); // true
isMarkdownExtension('markdown'); // true
isMarkdownExtension('txt'); // falseisMarkdownFile('README.md'); // true
isMarkdownFile('docs/guide.markdown'); // true
isMarkdownFile('notes.txt'); // false
isMarkdownFile('README'); // falsenormalizeExtension('.MD'); // 'md'
normalizeExtension('README.markdown'); // 'markdown'
normalizeExtension('/docs/file.MKD'); // 'mkd'- All extensions are stored in
extensions.json. - The runtime imports and freezes this list.
- A
Setis used for fast lookups. - Inputs are normalized before comparison.
This ensures consistency, correctness and no duplication bugs.
- Extensions are stored without leading dots.
- Helpers accept:
- extensions (
md) - dot-prefixed extensions (
.md) - filenames (
README.md) - file paths (
/docs/file.md)
- extensions (
- Files without extensions (e.g.
README) are not considered Markdown files.
These extensions are historically associated with Markdown tooling, particularly manual page generators and documentation systems. They are included for completeness and compatibility.
This package is especially useful for:
- Static site generators.
- Content ingestion pipelines.
- Markdown parsers and converters.
- GitHub Actions and repo automation.
- CLI tools that process files.
- AI / search indexing pipelines.
import { isMarkdownFile } from 'markdown-extensions';
const files = ['README.md', 'index.js', 'guide.markdown'];
const markdownFiles = files.filter(isMarkdownFile);
console.log(markdownFiles);
//=> ['README.md', 'guide.markdown']Type: readonly string[]
List of known Markdown file extensions (without leading dots).
Type: ReadonlySet<string>
A Set version of the extensions for fast lookups.
Normalize an extension or filename.
Returns a lowercase extension without a leading dot.
Returns true if the input represents a Markdown extension.
Returns true if the input represents a Markdown filename.
This package is intentionally:
- Small
- Predictable
- Dependency-free
- Focused on correctness
It aims to be a simple building block in larger systems rather than a full parsing solution.
MIT