Convert .ipynb notebooks β single files, whole folders or ZIP archives β into self-contained SageMath HTML notebooks, entirely in your browser.
A blank notebook with your custom settings (e.g., theme, your own Sage Cell server, AI settings etc.). These settings will be applied to all the exported notebooks. Current version of a blank SageMath AI notebook (v20) can be found at GitHub .
.html here
Three ways to feed the converter β they can be combined:
(a) one or more loose .ipynb files,
(b) a .zip archive with any folder structure,
(c) a folder dragged in or picked with the folder button.
Inside archives/folders only .ipynb files are converted;
everything else (images, data, PDFsβ¦) is copied over unchanged.
.ipynb files, a .zip, or a folder hereThe converter uses your template β a blank SageMath HTML notebook β as the host environment. The template is loaded into a hidden iframe, which means all the custom settings are applied in the exported HTML notebooks. Nothing is uploaded anywhere: reading, converting and zipping happen locally in your browser.
.html file is downloaded directly..zip containing the HTML files..zip with the original folder structure,
the generated HTML files, and all non-notebook files preserved.input.zip output.zip ββ course/ ββ course/ β ββ intro.ipynb β ββ intro.html β new β ββ intro.html (old) β ββ syllabus.html β untouched β ββ syllabus.html β ββ img/plot.png β copied β ββ img/plot.png ββ data/values.csv β copied ββ data/values.csv
intro.html was regenerated (the stale one was dropped),
syllabus.html had no matching notebook so it stayed,
and intro.ipynb was omitted because βKeep the original .ipynb filesβ is off.
# heading is used. In archive mode the file is still written into
the notebook's own folder; if the H1 name collides with a file produced in the same run,
a numeric suffix is added..ipynb is kept in the
output and no existing HTML is deleted β you never lose data because of a failed run.Two timers control how long the converter waits between operations inside the iframe. They exist because rendering happens asynchronously since the page (as of now) can't know in advance when it's truly done. Defaults work for typical notebooks β increase them if you see incomplete output, decrease them to speed up batches of small files.
| Setting | What it controls | When to change it |
|---|---|---|
| Settle time | How long to wait after .ipynb import before
triggering the Save sequence (as if one would do it in the Sage notebook). |
Increase (e.g. 4000β6000 ms) for long notebooks
with lots of LaTeX or large outputs. Decrease (e.g. 1500 ms) for short notebooks if you want batches to finish faster. |
| Per-file delay | Pause between consecutive conversions, after one is finished and before the next iframe is created. | Usually fine at the default. Increase if your browser seems sluggish during big batches; set to 0 for maximum speed. |