Copy-paste is your publishing pipeline
Without a direct build path, you copy notebook output into platform editors cell by cell, fixing broken formatting along the way.
Turn notebooks into polished, platform-ready content in one click — so you can focus on the writing, not formatting and distribution.
Try it now — no signup needed
Live notebook editor in your browser.
Preparing interactive demo...
Why NotebookPress
Every notebook you've tried to publish has the same story. Hours of manual conversion, broken formatting, and lost momentum.
Without a direct build path, you copy notebook output into platform editors cell by cell, fixing broken formatting along the way.
Running code in Jupyter, then switching to a text editor to write the narrative around it. The context switch kills your flow.
When every post requires an hour of manual conversion work, you start skipping weeks. The backlog grows. The habit breaks.
Workflow
Three steps. One tool. No copy-pasting between apps.
Capture ideas in markdown and code cells without moving between tools.
A structured technical draft from your very first session.
Execute Python in-browser with Pyodide while tightening your explanation.
Your narrative and code results stay in sync as you iterate.
Generate target-ready HTML for Substack, Medium, or X with one action.
Platform-ready HTML you can paste and publish. No reformatting.

About Me
The person behind NotebookPress
I love Jupyter Notebooks, it's hands-down the best format for math-and-code-heavy content. Notebooks combine theory, practice, and prose in one. It's a piece of content the reader can interact with. I write all of my posts in them. In fact, I wrote my Mathematics of Machine Learning book in Jupyter Notebooks. (Apologies to my editorial team.)
Unfortunately, converting a Jupyter Notebook to a post is a painful process. To fit the restrictions of platforms like Substack, I used to spend hours per post, manually rendering my LaTeX formulas and code snippets. But I don't want to waste any more time.
Instead of waiting for Substack, X, LinkedIn, Medium, and all the other platforms to add the support for interactive math and code snippets, I decided to build a tool on my own.
A tool that turns any Jupyter Notebook into a publication-ready post in a single click.
This became NotebookPress.
The goal is simple: you write in notebooks, and your readers never have to know.
Pricing
Simple pricing for writers who want notebook drafting, execution, and publishing in one tool.
Pro
$200 /year
No card needed.
FAQ
Quick answers to the questions we hear most from technical writers.
Anyone who writes technical content in Jupyter Notebooks and publishes to platforms like Substack, Medium, LinkedIn, or X. Data scientists writing tutorials, ML engineers explaining research, developers building in public — if your content has code, math, or both, NotebookPress is built for your workflow.
Yes. NotebookPress runs Python directly in your browser using Pyodide — a full CPython distribution compiled to WebAssembly. You can import NumPy, pandas, scikit-learn, and other popular packages. No local Python install required.
NotebookPress generates platform-optimized HTML for Substack, Medium, and X. The output is tailored to each platform's formatting constraints — math renders as images, code gets proper syntax highlighting, and the layout matches what each editor expects. WordPress and Ghost support is coming next.
Yes. NotebookPress gives you a project tree with your notebooks and generated HTML documents side-by-side. You can open them in split panes, edit your notebook on the left, and see the rendered article on the right — all in one browser tab.
Yes. Core features — notebook editing, Python execution, and multi-platform HTML builds — are stable and used daily. New features ship weekly.
Your notebooks are standard .ipynb files. You can export them at any time and open them in Jupyter, VS Code, or any notebook-compatible tool. No lock-in.
Start Publishing
Stop copy-pasting. Start publishing.
No credit card. No setup. Create an account and publish your first notebook in under five minutes.