nbdev
  • Get Started
  • Tutorial
  • Blog
  • Help
    • Report an Issue
    • Fast.ai Forum
    • FAQ

Home

Write, test, document, and distribute software packages and technical articles — all in one place, your notebook.

Create delightful software
with Jupyter Notebooks

Write, test, document, and distribute software packages and technical articles — all in one place, your notebook.

Get started

Trusted in industry

Interactive programming
without compromise

Traditional programming environments throw away the result of your exploration in REPLs or notebooks. nbdev makes exploration an integral part of your workflow, all while promoting software engineering best practices.

Beautiful technical documentation and scientific articles with Quarto

Out-of-the-box continuous integration with GitHub Actions

Publish code to PyPI and conda, and prose to GitHub Pages

Two-way sync with your favourite IDEs

Write prose, code, and tests in notebooks — no context-switching

Git-friendly notebooks: human-readable merge conflicts; no unwanted metadata

Here’s what experts are saying

Chris Lattner

Inventor of Swift and LLVM

I really do think [nbdev] is a huge step forward for programming environments.

Fernando Pérez

Creator of Jupyter

[nbdev] should be celebrated and used a lot more — I have kept a tab with your original nbdev blog post open for months in Chrome because of how often I refer to it and point others to this work.

David Berg

Software Engineer, Netflix

Prior to using nbdev, documentation was the most cumbersome aspect of our software development process… Using nbdev allows us to spend more time creating rich prose around the many code snippets guaranteeing the whole experience is robust.

nbdev has turned what was once a chore into a natural extension of the notebook-based testing we were already doing.

Erik Gaasedelen

Software Engineer, Lyft

I use this in production at my company. It’s an awesome tool… nbdev streamlines everything so I can write docs, tests, and code all in one place… The packaging is also really well thought out.

From my point of view it is close to a Pareto improvement over traditional Python library development.

Roxanna Pourzand

Product Manager, Transform

We’re so excited about using nbdev. Our product is technical so our resulting documentation includes a lot of code-based examples. Before nbdev, we had no way of maintaining our code examples and ensuring that it was up-to-date for both command inputs and outputs. It was all manual. With nbdev, we now have this under control in a sustainable way. Since we’ve deployed these docs, we also had a situation where we were able to identify a bug in one of our interfaces, which we found by seeing the error that was output in the documentation.

Hugo Bowne-Anderson

Head of Developer Relations, Outerbounds

Nbdev has transformed the way we write documentation. Gone are the days of worrying about broken code examples when our API changes or due to human errors associated with copying & pasting code into markdown files. The authoring experience of nbdev is also powerful, allowing us to write prose and live code in a unified interface, which allows more experimentation with technical content. On top of this, nbdev allows us to include unit tests in our documentation which mitigates the burden of maintaining the docs over time.

Get started in seconds

Install nbdev