Convert IPYNB to Markdown

Paste a Jupyter notebook JSON file and export a clean Markdown document: markdown cells verbatim, code as fenced blocks, and stored outputs rendered inline. Choose whether to keep code, outputs, prompts, and image data. Runs entirely in your browser.

Try:
Markdown

Export a Jupyter notebook as Markdown

Paste the JSON contents of an .ipynb file and this tool turns the notebook into a single Markdown document. Markdown cells are emitted as Markdown, code cells become fenced code blocks using the notebook language, and stored outputs can be rendered below the cell just like a notebook export.

Use it when you want a clean README, blog draft, lab note, or documentation page from a notebook without installing Python or running nbconvert locally.

What gets converted

Worked example

A notebook with one markdown cell and one code cell:

{"cells":[
  {"cell_type":"markdown","source":["# Demo\n","Some notes"]},
  {"cell_type":"code","execution_count":1,
   "source":["print(2 + 2)"],
   "outputs":[{"output_type":"stream","name":"stdout","text":["4\n"]}]}
],"metadata":{"language_info":{"name":"python"}},"nbformat":4,"nbformat_minor":5}

becomes:

# Demo

Some notes

```python
print(2 + 2)
```

```
4
```

Turn off Include code cells to get a no-input export that keeps outputs, or turn off Include stored outputs for a code-only notebook-to-Markdown conversion.

FAQ

Is this the same as converting a notebook to a Python script?

No. A script export focuses on runnable code and usually drops notebook outputs. This tool is a document export: it preserves markdown cells and, by default, renders stored outputs such as stdout, rich results, errors, and images. Use ipynb-to-script when you want a .py; use this when you want a readable .md.

What happens to plots and image outputs?

By default, image outputs are embedded as inline data: URIs so the Markdown is a single self-contained string. If you do not want large base64 blocks, set Image handling to placeholder for *[image output]* notes or omit to drop image outputs entirely. A sidecar _files/ image directory is not produced because this tool returns one Markdown value.

Can it keep outputs but hide the code?

Yes. Turn off Include code cells and leave Include stored outputs on. That matches the common no-input export shape: prose plus outputs, without the source code that produced them.

Does it execute the notebook?

No. It reads the JSON already stored in the .ipynb file. Only outputs that are present in the notebook are rendered. If a notebook was saved after clearing its outputs, this converter cannot recreate them.

Why are some rich outputs rendered as HTML?

Notebook outputs can carry many MIME representations. Markdown is chosen first, then images, then HTML, then LaTeX, then plain text. Keeping HTML is useful for DataFrame tables and other rich displays because raw HTML is valid inside Markdown.

Limits & edge cases

Developer & Automation Access

Run it from the terminal

Same engine as this page, headless — via the gizza CLI:

gizza tool ipynb-to-markdown '{"cells":[{"cell_type":"markdown","source":["# Title\n"]},{"cell_type":"code","execution_count":1,"source":["print(2 + 2)"],"outputs":[{"output_type":"stream","name":"stdout","text":["4\n"]}]}],"metadata":{"language_info":{"name":"python"}},"nbformat":4,"nbformat_minor":5}'

New to the CLI? Get gizza →

Open it by URL

Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:

https://gizza.ai/tools/ipynb-to-markdown/?notebook=%7B%22cells%22%3A%5B%7B%22cell_type%22%3A%22markdown%22%2C%22source%22%3A%5B%22%23%20Title%5Cn%22%5D%7D%2C%7B%22cell_type%22%3A%22code%22%2C%22execution_count%22%3A1%2C%22source%22%3A%5B%22print%282%20%2B%202%29%22%5D%2C%22outputs%22%3A%5B%7B%22output_type%22%3A%22stream%22%2C%22name%22%3A%22stdout%22%2C%22text%22%3A%5B%224%5Cn%22%5D%7D%5D%7D%5D%2C%22metadata%22%3A%7B%22language_info%22%3A%7B%22name%22%3A%22python%22%7D%7D%2C%22nbformat%22%3A4%2C%22nbformat_minor%22%3A5%7D&include_code=true&include_outputs=true&include_markdown=true&show_prompts=true&image_mode=embed

Machine-readable descriptor: tool.json — title + parameters JSON Schema for agents.