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 🙏

© 2025 – Pkg Stats / Ryan Hefner

md2apkg

v1.3.0

Published

A markdown to anki-deck converter

Readme

Install

npm install -g md2apkg

Usage

Basic Usage

md2apkg -o deck.apkg README.md

Advanced options

  -i, --input <path>            markdown file path
  -o, --output <path>           apkg file path (default: "./output.apkg")
  -n, --deck-name <name>        name of the deck (otherwise defaults to first heading)
  --ignore-levels <levels>      list of heading levels to ignore
  --include-empty               include empty cards in the deck
  --ignore-latex-dollar-syntax  $\LaTeX$-Syntax will not be converted to \(\LaTeX\)-Syntax supported by anki
  --code-style                  highlight.js style for code syntax highlighting (defaults to "github")

How are cards created?

Cards are created for each individual heading. The heading itself is used as the front, whereas the back contains everything following the heading.

Custom Markdown Extensions

You may want to exlude certain parts of your markdown document. To not create a card for a particular heading simply include the following html-comment in its body.

<!-- md2apkg ignore-card -->

In some cases you might want to include more than the heading on the front of the card.

## Example Header

This paragraph should be on the front in addition to the heading.

<!-- md2apkg split -->

The back starts here.

Using % instead of <!-- md2apkg split --> works as well.

Tags for your cards are supported as well, just use the following html-comment.

<!-- md2apkg tags tagA tagB tagC tagD -->

Advanced Card Types

Multiple Choice

md2apkg supports multiple choice cards. The following example shows how they can be used. The front of the card always shows all the answers with unticked checkboxes. The back contains the same answers with correctly ticked checkboxes. All answers are shuffled in a random order (use <!-- md2apkg type multiple-choice-no-shuffle --> to disable this behavior). When switching the sides of the cards answers are automatically compared and highlighted in red/green. For this to work both sides have to contain the same answers with the same exact formating (including capitalization).

## Cities of Germany

<!-- md2apkg type multiple-choice -->

Which of the following cities are located within Thuringia?

- [ ] Erfurt
- [ ] Frankfurt
- [ ] Munich
- [ ] Dresden
- [ ] Gera

<!-- md2apkg split -->

- [X] Erfurt
- [ ] Frankfurt
- [ ] Munich
- [ ] Dresden
- [X] Gera

A simplification of this syntax is available as well. It's applied if the front of a multiple choice card does not contain a list of answers. Therefore the following example has the exact same outcome as the above.

## Cities of Germany

<!-- md2apkg type multiple-choice -->

Which of the following cities are located within Thuringia?

- [X] Erfurt
- [ ] Frankfurt
- [ ] Munich
- [ ] Dresden
- [X] Gera