Documentation.NotebookToMarkdown 2.0.0

There is a newer version of this package available.
See the version list below for details.
dotnet add package Documentation.NotebookToMarkdown --version 2.0.0
                    
NuGet\Install-Package Documentation.NotebookToMarkdown -Version 2.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Documentation.NotebookToMarkdown" Version="2.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Documentation.NotebookToMarkdown" Version="2.0.0" />
                    
Directory.Packages.props
<PackageReference Include="Documentation.NotebookToMarkdown" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Documentation.NotebookToMarkdown --version 2.0.0
                    
#r "nuget: Documentation.NotebookToMarkdown, 2.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Documentation.NotebookToMarkdown@2.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Documentation.NotebookToMarkdown&version=2.0.0
                    
Install as a Cake Addin
#tool nuget:?package=Documentation.NotebookToMarkdown&version=2.0.0
                    
Install as a Cake Tool

Documentation.NotebookToMarkdown

NuGet

A .NET docfx plugin — and reusable library — that converts Jupyter Notebook (.ipynb) files into rendered documentation.

Use it as a docfx plugin to publish notebooks as ordinary documentation pages, or use the underlying NotebookConverter directly in any pipeline. The only runtime dependency of the converter is Newtonsoft.Json; the docfx plugin contract (Docfx.Plugins) is provided by the docfx host at runtime.

What it does

  • Markdown cells are emitted verbatim.
  • Code cells are wrapped in fenced code blocks tagged with the notebook's language (from metadata.language_info.name).
  • Execution outputs are rendered as HTML:
    • execute_result (text/plain) → <pre class="jupyter-execute-result"><code>…</code></pre>
    • display_data images (image/png, image/gif, image/jpeg) → inline <img> data URIs
  • Cell attachments (![alt](attachment:name)) are inlined as base64 data: URIs.
  • Raw cells are skipped (matching nbconvert).

If the input cannot be parsed, or is missing required notebook structure, the original input is returned unchanged so callers can fall back gracefully.

Installation

dotnet add package Documentation.NotebookToMarkdown

Target frameworks: net8.0 and net10.0 (current LTS releases).

Use as a docfx plugin

The package ships a docfx IDocumentProcessor (JupyterDocumentProcessor) that claims .ipynb files and routes them through docfx's Markdown pipeline. To enable it, place the plugin assembly in the plugins folder of a docfx template and reference that template from your build.

  1. Restore the package and copy the plugin assembly (and Newtonsoft.Json.dll) into a template:

    _templates/NotebookPlugin/plugins/
      Documentation.NotebookToMarkdown.dll
      Newtonsoft.Json.dll
    

    Use the lib/net8.0 or lib/net10.0 assembly that matches the runtime your docfx tool runs on.

  2. Reference the template in docfx.json (alongside default or your own template):

    {
      "build": {
        "content": [ { "files": ["**/*.ipynb"] } ],
        "dest": "_site",
        "template": [ "default", "_templates/NotebookPlugin" ]
      }
    }
    
  3. Run docfx build. Each .ipynb is converted and rendered to an .html page.

Use the converter directly

using Documentation.NotebookToMarkdown;

string notebookJson = File.ReadAllText("Hello.ipynb");

var converter = new NotebookConverter();
string markdown = converter.ConvertToMarkdown(notebookJson);

Capturing warnings

Non-fatal issues (for example, a malformed cell) are reported through an optional callback:

var converter = new NotebookConverter(warning => Console.Error.WriteLine(warning));
string markdown = converter.ConvertToMarkdown(notebookJson);

Building and testing

dotnet build
dotnet test

License

MIT

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2.2.1 139 6/19/2026 2.2.1 is deprecated because it is no longer maintained.
2.2.0 110 6/18/2026
2.1.0 107 6/18/2026
2.0.0 112 6/18/2026
1.0.0 456 6/18/2026