Python bindings for Silicon's renderer.
Create beautiful images of your source code, powered by Rust.
uv add silicateimportsilicatepng_bytes=silicate.generate(
"print('Hello, World!')",
language="python",
theme="Dracula",
)Silicate is a Python binding for Silicon, the Rust tool that turns source code into beautifully rendered PNGs. Unlike wrapper approaches that shell out to a CLI, Silicate uses PyO3 to call Silicon's Rust library directly, giving you native performance with a clean Python API.
- Native performance — no subprocess, no temp files; the renderer runs in-process via PyO3.
- 24+ built-in themes — Dracula, Nord, Monokai, GitHub, Solarized, and more.
- Full Silicon control — every renderer option exposed as a keyword argument.
- PNG bytes or file —
generate()returns bytes,to_file()writes directly.
importsilicate# PNG bytespng_bytes=silicate.generate(
"print('Hello, World!')",
language="python",
theme="Dracula",
)
# Save directly to filesilicate.to_file(
"fn main() { println!(\"Hello!\"); }",
"output.png",
language="rs",
theme="Nord",
window_title="main.rs",
)
# Explore available themes and languagesprint(silicate.list_themes())
print(silicate.list_languages())Dracula![]() | Nord![]() |
Monokai Extended![]() | GitHub![]() |
Solarized Dark![]() | Your code here![]() |
All parameters after code (and output for to_file) are keyword-only:
| Parameter | Default | Description |
|---|---|---|
language | "python" | Syntax highlighting language |
theme | "Dracula" | Color theme (use list_themes()) |
font | None | Font list as [("Name", size)], defaults to Hack 26pt |
show_line_numbers | True | Display line numbers |
show_window_controls | True | macOS-style window buttons |
window_title | None | Title bar text |
round_corner | True | Rounded image corners |
background | "#abb8c3" | Background color (hex) |
shadow_color | "#707070" | Shadow color (hex) |
shadow_blur_radius | 50.0 | Shadow blur radius |
pad_horiz | 80 | Horizontal padding (px) |
pad_vert | 100 | Vertical padding (px) |
shadow_offset_x | 0 | Shadow offset in X axis |
shadow_offset_y | 0 | Shadow offset in Y axis |
code_pad_right | 25 | Right padding inside code window (px) |
highlight_lines | None | 1-based line numbers to highlight |
tab_width | 4 | Spaces per tab |
line_offset | 1 | Starting line number |
line_pad | 2 | Line spacing (px) |
# Clone with submodules
git clone --recurse-submodules https://github.com/alltuner/silicate.git
cd silicate
# Create venv and build
uv venv
VIRTUAL_ENV=.venv uvx maturin develop
# Test
uv run python -c "import silicate; print(silicate.list_themes())"Silicate is an open source project built by David Poblador i Garcia through All Tuner Labs.
If this project was useful to you, consider supporting its development.
Built by David Poblador i Garcia with the support of All Tuner Labs.
Made with ❤️ in Poblenou, Barcelona.






