uv or pip
16 built-in themes with light and dark mode
Shortcodes – rich content without HTML in markdown
Blog and docs templates with pagination, taxonomies, and search
Live reload dev server with instant browser refresh
Presentations – one markdown file per slide, powered by reveal.js
slide_image shortcode – absolute or inlinetop / left / right / bottomclass="logo-float logo-pulse logo-sway logo-glow"
Write Python in a fenced block – Zorto runs it at build time and embeds the output:
# Stdlib only -- this demo runs without extra installs. import statistics revenue = [12, 15, 13, 17, 21, 24] costs = [10, 11, 12, 13, 14, 15] print(f"Mean revenue: {statistics.mean(revenue):.2f}") print(f"Mean costs: {statistics.mean(costs):.2f}") print(f"Margin: {statistics.mean(revenue) - statistics.mean(costs):.2f}")
Mean revenue: 17.00
Mean costs: 12.50
Margin: 4.50
Add plotly, matplotlib, altair, or seaborn to your venv to embed live charts the same way.
# Stdlib only -- a tiny ASCII sparkline of a damped oscillation. import math x = [i * 0.4 for i in range(40)] y = [math.sin(v) * math.exp(-v * 0.12) for v in x] ramp = " ▁▂▃▄▅▆▇█" lo, hi = min(y), max(y) spark = "".join(ramp[round((v - lo) / (hi - lo) * (len(ramp) - 1))] for v in y) print(f"damped sin(x) * e^(-0.12x), 40 samples") print(spark)
damped sin(x) * e^(-0.12x), 40 samples
▃▅▇██▇▆▅▃▂▁ ▁▁▂▄▅▅▅▅▅▄▄▃▂▂▂▂▂▃▃▄▄▄▄▄▄▄▃
For real charts, install matplotlib, plotly, altair, or seaborn – Zorto captures Figure objects and embeds them as static HTML automatically.
Every theme supports light and dark mode with a single toggle.
Press → or space to reveal one at a time:
zorto check validates content, links, and structurebackground_image – any URL, sized and positioned by reveal.jsbackground_color – solid fill with hex or CSS color namesbackground_size / background_opacity – tune the watermarkreveal_theme – swap the slide’s reveal.js theme (this one is moon)Everything lives in the slide’s [extra] table – no template edits required.
weight field controls slide order[extra] controls background, transitions, and layout
slide_image – positioned or inline imagesfragment – progressive revealcolumns – side-by-side layoutspeaker_notes – reveal.js speaker view.tera template in shortcodes/zorto checkThe whole presentation you’re watching is rendered from these shortcodes.
# Install uv tool install zorto # Create a new site zorto init mysite cd mysite # Preview with live reload zorto preview --open
Or use as a Python library:
import zorto zorto.build(".")