npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

code-block-extractor

v0.1.0

Published

Extract fenced code blocks from Markdown.

Readme

code-block-extractor

Extract fenced code blocks from Markdown.

This package provides a small, dependency-free way to find and extract fenced code blocks from Markdown content. It is useful for content pipelines, documentation tooling, static site workflows, and any system that needs to inspect or reuse code examples embedded in Markdown.

Why this project exists

Markdown is widely used across documentation, notes, blog posts, and developer tooling. In many workflows, code blocks are not just presentation. They are data.

You may need to:

  • collect all code examples from a document.
  • detect which languages are used.
  • run checks against embedded snippets.
  • transform code samples into structured output.

This package makes that straightforward.

Install

npm install code-block-extractor

Example

import { extractCodeBlocks } from "code-block-extractor";

const markdown = `
# Example

Here is JavaScript:

\`\`\`js
console.log("Hello, world!");
\`\`\`

And here is Python:

\`\`\`python
print("Hello, world!")
\`\`\`
`;

const blocks = extractCodeBlocks(markdown);

console.log(blocks);

Result:

[
  {
    index: 0,
    language: "js",
    code: "console.log(\"Hello, world!\");",
    fence: "```",
    raw: "```js\nconsole.log(\"Hello, world!\");\n```"
  },
  {
    index: 1,
    language: "python",
    code: "print(\"Hello, world!\")",
    fence: "```",
    raw: "```python\nprint(\"Hello, world!\")\n```"
  }
]

API

extractCodeBlocks(markdown, options?)

Returns an array of extracted code blocks.

Parameters

  • markdown (string) - The Markdown content to inspect.
  • options (object, optional)
    • includeRaw (boolean, default true) - Include the raw fenced block in the result.
    • trim (boolean, default true) - Trim leading and trailing newlines from extracted code.
    • languages (string[], optional) - Only return code blocks matching the given languages.

Returns

An array of objects with:

  • index - Zero-based index of the extracted block.
  • language - Language info string, normalized to lowercase, or null.
  • code - Extracted code.
  • fence - Fence marker used, such as ````` or ~~~.
  • raw - Raw fenced block, if includeRaw is enabled.

Design notes

This parser focuses on standard fenced Markdown code blocks using backticks or tildes. It is intentionally lightweight and does not attempt to fully parse Markdown documents or handle every edge case from every Markdown flavor.

The goal is a practical extractor that is easy to understand and easy to use.

Example use cases

  • documentation analysis.
  • snippet extraction for testing.
  • static site content pipelines.
  • language usage audits in Markdown files.
  • building code example galleries.

License

MIT