{"id":28183286,"url":"https://github.com/akiomik/mado","last_synced_at":"2025-07-19T06:06:20.744Z","repository":{"id":270461915,"uuid":"904238381","full_name":"akiomik/mado","owner":"akiomik","description":"A fast Markdown linter written in Rust.","archived":false,"fork":false,"pushed_at":"2025-07-18T02:23:01.000Z","size":1305,"stargazers_count":72,"open_issues_count":10,"forks_count":1,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-18T18:47:02.759Z","etag":null,"topics":["github-actions","linter","markdown","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/akiomik.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["akiomik"],"patreon":null,"open_collective":null,"ko_fi":"akiomik","tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2024-12-16T14:04:34.000Z","updated_at":"2025-07-18T02:23:04.000Z","dependencies_parsed_at":null,"dependency_job_id":"7856f6c5-4a39-4fd9-961c-8ef922bebe54","html_url":"https://github.com/akiomik/mado","commit_stats":null,"previous_names":["akiomik/mado"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/akiomik/mado","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akiomik%2Fmado","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akiomik%2Fmado/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akiomik%2Fmado/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akiomik%2Fmado/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/akiomik","download_url":"https://codeload.github.com/akiomik/mado/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akiomik%2Fmado/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265896092,"owners_count":23845424,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["github-actions","linter","markdown","rust"],"created_at":"2025-05-16T04:15:36.781Z","updated_at":"2025-07-19T06:06:20.724Z","avatar_url":"https://github.com/akiomik.png","language":"Rust","funding_links":["https://github.com/sponsors/akiomik","https://ko-fi.com/akiomik"],"categories":["Markdown Building Blocks","Rust"],"sub_categories":["Markdown Lint / Style Rule Checker"],"readme":"# Mado\n\n[![CI](https://github.com/akiomik/mado/actions/workflows/ci.yml/badge.svg)](https://github.com/akiomik/mado/actions/workflows/ci.yml)\n[![codecov](https://codecov.io/github/akiomik/mado/graph/badge.svg?token=X9UW8G77E6)](https://codecov.io/github/akiomik/mado)\n\nA fast Markdown linter written in Rust.\nCompatible with [CommonMark](https://commonmark.org)\nand [GitHub Flavored Markdown (GFM)](https://github.github.com/gfm/).\n\n## Usage\n\n```bash\nmado check .\nmado check path/to/*.md\n```\n\n## Performance\n\nApprox. **49-60x faster** than existing linters\n(e.g. [markdownlint](https://github.com/markdownlint/markdownlint)).\n\n```mermaid\n---\nconfig:\n    xyChart:\n        height: 200\n        titleFontSize: 14\n        chartOrientation: horizontal\n        xAxis:\n            labelFontSize: 12\n            titleFontSize: 14\n        yAxis:\n            labelFontSize: 12\n            titleFontSize: 14\n---\nxychart-beta\n    title \"Linting ~1,500 Markdown files (Lower is faster)\"\n    x-axis [\"mado (rust)\", \"markdownlint-cli (node.js)\", \"markdownlint (ruby)\", \"markdownlint-cli2 (node.js)\"]\n    y-axis \"Time (seconds)\" 0 --\u003e 10\n    bar [0.129, 6.381, 6.609, 7.817]\n```\n\nThis benchmark was conducted on a MacBook Pro (2021, M1 Max)\nusing [hyperfine](https://github.com/sharkdp/hyperfine)\nwith [GitLab documentation](https://gitlab.com/gitlab-org/gitlab/-/tree/7d6a4025a0346f1f50d2825c85742e5a27b39a8b/doc)\nas the dataset.\n\n## Installation\n\n### Homebrew (macOS and Linux)\n\n```bash\nbrew tap akiomik/mado https://github.com/akiomik/mado.git\nbrew install mado\n```\n\n### Nix (macOS and Linux)\n\n```bash\nnix profile install github:akiomik/mado\n```\n\n### Scoop (Windows)\n\n```bash\nscoop install https://raw.githubusercontent.com/akiomik/mado/refs/heads/main/pkg/scoop/mado.json\n```\n\n### WinGet (Windows)\n\n```bash\n# For security reasons, installing from local manifest files requires that this feature be enabled by an administrator.\n# For more details, see https://learn.microsoft.com/en-us/windows/package-manager/winget/install#local-install\nwinget settings --enable LocalManifestFiles\n\ncurl.exe -o mado.yml https://raw.githubusercontent.com/akiomik/mado/refs/heads/main/pkg/winget/mado.yml\nwinget install -m mado.yml\n```\n\n### Manually\n\nPre-built binaries are available for download from [the release page](https://github.com/akiomik/mado/releases/latest).\n\n## Supported Rules\n\nMado supports most [markdownlint rules](https://github.com/markdownlint/markdownlint/blob/main/docs/RULES.md).\n\n* :white_check_mark: Stable support\n* :hammer: Unstable support\n* :warning: Unsupported option(s)\n* :x: Not supported\n\n| Rule  | Support            | Note                                           |\n|-------|--------------------|------------------------------------------------|\n| MD001 | :white_check_mark: |                                                |\n| MD002 | :white_check_mark: |                                                |\n| MD003 | :hammer:           |                                                |\n| MD004 | :white_check_mark: |                                                |\n| MD005 | :white_check_mark: |                                                |\n| MD006 | :white_check_mark: |                                                |\n| MD007 | :hammer:           |                                                |\n| MD009 | :white_check_mark: |                                                |\n| MD010 | :white_check_mark: |                                                |\n| MD012 | :white_check_mark: |                                                |\n| MD013 | :white_check_mark: |                                                |\n| MD014 | :white_check_mark: |                                                |\n| MD018 | :white_check_mark: |                                                |\n| MD019 | :white_check_mark: |                                                |\n| MD020 | :hammer:           |                                                |\n| MD021 | :white_check_mark: |                                                |\n| MD022 | :white_check_mark: |                                                |\n| MD023 | :white_check_mark: |                                                |\n| MD024 | :white_check_mark: |                                                |\n| MD025 | :white_check_mark: |                                                |\n| MD026 | :white_check_mark: |                                                |\n| MD027 | :hammer:           |                                                |\n| MD028 | :white_check_mark: |                                                |\n| MD029 | :white_check_mark: |                                                |\n| MD030 | :white_check_mark: |                                                |\n| MD031 | :white_check_mark: |                                                |\n| MD032 | :hammer:           |                                                |\n| MD033 | :white_check_mark: |                                                |\n| MD034 | :white_check_mark: |                                                |\n| MD035 | :white_check_mark: |                                                |\n| MD036 | :white_check_mark: |                                                |\n| MD037 | :white_check_mark: |                                                |\n| MD038 | :white_check_mark: |                                                |\n| MD039 | :white_check_mark: |                                                |\n| MD040 | :white_check_mark: |                                                |\n| MD041 | :white_check_mark: |                                                |\n| MD046 | :white_check_mark: |                                                |\n| MD047 | :white_check_mark: |                                                |\n\n## Configuration\n\nMado can be configured via `mado.toml` or `.mado.toml` file in the current directory.\nYou can also use global configuration files located in:\n\n* `Linux`: `~/.config/mado/mado.toml`\n* `macOS`: `~/.config/mado/mado.toml`\n* `Windows`: `~\\AppData\\Roaming\\mado\\mado.toml`\n\nFor more details,\nsee [the example `mado.toml`](https://github.com/akiomik/mado/blob/main/mado.toml)\nand [the JSON Schema for `mado.toml`](https://github.com/akiomik/mado/blob/main/pkg/json-schema/mado.json).\n\n## GitHub Actions\n\nMado is compatible with GitHub Actions.\n\n```yaml\n# Basic usage (runs `mado check .`)\n- uses: akiomik/mado@v0.3.0\n\n# Custom usage (runs `mado` with specified arguments)\n- uses: akiomik/mado@v0.3.0\n  with:\n    args: '--config path/to/mado.toml check path/to/*.md'\n```\n\n## Development\n\n[just](https://github.com/casey/just/tree/master) is required.\n\n### Running Tests\n\n```bash\njust test\n```\n\n### Linting Code\n\n```bash\njust lint\n```\n\n### Benchmarking\n\n```bash\n# Download Markdown dataset\n./scripts/benchmarks/setup.sh\n\n# Benchmark mado, mdl and markdownlint-cli using hyperfine\n./scripts/benchmarks/comparison.sh\n```\n\n### Profiling\n\nFirst, install [`flamegraph`](https://github.com/flamegraph-rs/flamegraph):\n\n```bash\ncargo install flamegraph\n```\n\nThen run:\n\n```bash\njust flamegraph\n```\n\n### Fuzz Testing\n\nFirst, install [`cargo-fuzz`](https://github.com/rust-fuzz/cargo-fuzz):\n\n```bash\ncargo install cargo-fuzz\n```\n\nThen run:\n\n```bash\njust fuzz\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakiomik%2Fmado","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fakiomik%2Fmado","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakiomik%2Fmado/lists"}