Silicate is a high-performance, cross-platform viewer and renderer for Procreate files (.procreate). Built with Rust and powered by WebGPU, it provides both native desktop applications and a web-based viewer for read access to your Procreate artwork. Useful for archiving and preserving your digital artworks.
Don't have a Procreate file? Try the included
reference.procreatefile in the repository's base directory!
Web Viewer | Launch
The web viewer provides instant access without installation:
- Requires a modern browser with WebAssembly and WebGPU support.
- However, it is slower than the native viewer due to single-threaded execution.
- The UI may be unresponsive during compositing.
Browser Compatibility:
- Chrome/Edge 113+
- Firefox 121+ (with WebGPU enabled)
- Safari 18+ (macOS Sonoma+)
Native Viewer | Download
Download platform-specific binaries from the Releases page:
- Windows -
.exe - macOS -
.dmgpackage - Linux - Binary
Get cutting-edge builds from the CI pipeline:
- Navigate to the latest successful workflow run
- Download
release-{your-os}artifact - Extract and run
macOS Users:
- Unpack the
.zipor open the.dmgfiles - The app is not notarized, so you may need to allow it manually by either:
- Allow the app in
System PreferencesβSecurity & Privacy - Remove quarantine with the Terminal
xattr -d com.apple.quarantine <file_path>
- Allow the app in
Silicate includes a thumbnail provider for Windows Explorer (libs/silica-thumbs) that shows previews of .procreate files in File Explorer, just like images.
- Uses the
QuickLook/Thumbnail.pngpreview embedded in each file, so thumbnails appear instantly without compositing. - Registers for the current user only, so no administrator rights are needed.
- Native Desktop Apps: Windows, macOS, and Linux
- Web Viewer: Modern browsers with WebGPU support
- Multi-file Support: Load and view multiple
.procreatefiles simultaneously - Drag & Drop: Intuitive file loading
- Real-time compositing: Fast and accurate rendering of Procreate files
- Powered by
wgpufor cross-platform performance - Live preview of layer changes
- Supports blending modes, masks, opacity control
- Powered by
- Export: Save your Procreate files as images with multiple formats
- Procreate-Inspired UI: Familiar interface for Procreate users
- Explorer Thumbnails: Previews of
.procreatefiles in Windows File Explorer
The renderer produces slightly different results compared to Procreate's native engine:
SaturationandHueblending modes follow Photoshop's style instead of Procreate's
- Latest stable Rust toolchain
- For native builds: Platform-specific dependencies
- Windows: MSVC toolchain
- macOS: Xcode Command Line Tools
- Linux:
build-essential
# Clone the repository
git clone https://github.com/Axaril/silicate.git
cd silicate
# Build native release
cargo build --release
# Run native app
cargo run --release# Build for web (requires trunk)
cargo install trunk
trunk build --releaseThe wasm-threads feature decodes layers on a pool of Web Workers. It needs a nightly toolchain with rust-src (rustup component add rust-src --toolchain nightly) to rebuild std with atomics:
export RUSTUP_TOOLCHAIN=nightly
export CARGO_UNSTABLE_BUILD_STD=std,panic_abort
export RUSTFLAGS="-C target-feature=+atomics,+bulk-memory,+mutable-globals \
-C link-arg=--shared-memory -C link-arg=--max-memory=4294967296 -C link-arg=--import-memory \
-C link-arg=--export=__wasm_init_tls -C link-arg=--export=__tls_size \
-C link-arg=--export=__tls_align -C link-arg=--export=__tls_base"
trunk build --release --features wasm-threadsThe page must be cross-origin isolated to use shared memory. trunk serve sends the required headers (see Trunk.toml), and on static hosts like GitHub Pages the service worker in assets/sw.js adds them.
# Build the thumbnail DLL and register it with Explorer for the current user
cargo xtask thumbs register
# Remove the registration
cargo xtask thumbs unregisterExplorer keeps the DLL loaded after showing a thumbnail, so re-registering a rebuilt DLL may fail. Add --restart-explorer to register to release it. See the thumbnail provider README for all options.
All .procreate files are standard ZIP archives with the following structure:
filename.procreate (ZIP archive)
βββ {UUID}/
β βββ {col}~{row}.chunk # LZO-compressed RGBA tile data
βββ QuickLook/
β βββ Thumbnail.png # Low-quality preview
βββ video/
β βββ segments/
β βββ segment-X.mp4 # Timelapse video segments
βββ Document.archive # NSKeyedArchive with layer metadata
- Each layer has a unique UUID
- Contains chunked raster data in
{col}~{row}.chunkfiles - Compression: LZO or LZ4
- Format: Premultiplied RGBA or Grayscale (masks)
- Tile Size:
tile_size Γ tile_sizepixels per chunk - Chunks are recombined to reconstruct the full layer
Thumbnail.png: Low-resolution preview generated by Procreate- Used for file browser previews on iOS/macOS, and by Silicate's Windows Explorer thumbnail provider
- Timelapse recording of the drawing process
- Split into multiple MP4 segments
- Not currently utilized by Silicate
Apple's serialization format for Objective-C/Swift objects. Structure:
| Component | Description |
|---|---|
version |
Archive format version (not used) |
archiver |
Archiver identifier (not used) |
top |
Root object reference (SilicaDocument) |
objects |
Object pool containing all serialized values |
Key-Value Structure:
- Keys are simple strings
- Values are often
idindices pointing to objects in theobjectsarray - Contains layer hierarchy, canvas size, document settings, etc.
Important Fields:
- Layer information (hierarchy, names, UUIDs)
- Canvas dimensions
- Document metadata
- Layer properties (opacity, blend mode, visibility)
This project builds upon the work of others in the Procreate ecosystem:
-
Silica Viewer by redstrate
- Provided foundational understanding of the Procreate file format
- Base code for NSKeyedArchive parsing
-
Prospect by Jarom Vogel
- Alternative Procreate viewer focused on final composites
- Supports timelapse playback functionality
-
SVG Thumbnail Extension for Windows Explorer by Thio
- Basis for the Windows Explorer thumbnail provider
Special thanks to the Rust community and the maintainers of:
wgpu- Cross-platform graphics APIegui- Immediate mode GUI framework- All other dependencies listed in
Cargo.toml

