Pretty Lattice is a crystal visualization tool for creating beautiful, publication-ready figures.
English | 简体中文
- Pretty: tasteful defaults for colors, materials, lighting, and depth
- Simple: an intuitive browser GUI for loading, viewing, and exporting structures
- Reliable: structure parsing and analysis powered by the mature pymatgen package
- Scalable: smooth interaction with systems up to 10k atoms
- Customizable: tune colors, radii, materials, opacity, orientation, and export settings
I always find it harder than it should be to make a good-looking crystal figure.
Traditional crystallographic tools such as VESTA are powerful, but their visual defaults often feel outdated: harsh color palettes, low-quality 3D shading, and a lot of manual tweaking before the result looks acceptable. You could import the structure into professional 3D software such as Cinema 4D or Blender, but that feels like overkill and comes with a much steeper learning curve.
Pretty Lattice is my attempt to fill that gap. Built on Three.js, it stays (relatively) lightweight without compromising visual quality. It offers a modern, intuitive interface with familiar controls researchers expect, and produces clean, aesthetically pleasing figures out of the box.
Note
By design, Pretty Lattice focuses on visualization. It is not intended to replace mature materials-analysis tools such as VESTA and Materials Studio, and it does not try to provide complex structure editing or analysis workflows. Input files are treated as read-only. The intended workflow is to prepare and analyze structures with more specialized tools, then bring the final structure into Pretty Lattice for viewing, styling, and export.
pip install pretty-latticeOr install as an isolated tool with uv:
uv tool install pretty-latticeRequirements:
- Python 3.12+
- macOS, Linux, or Windows
- Any modern browser
After installation, start the local GUI:
prlPretty Lattice starts a local server and opens your browser automatically.
Run once without installing:
uvx --from pretty-lattice prlUseful launch options:
prl --no-open # start the server without opening a browser
prl -p 0 # choose any available port automaticallyprl gui is kept as a compatibility alias for the same GUI launcher.
This project is still in an early stage, and the main functionality is not complete yet.
For now, development is maintainer-led, and I’m not accepting pull requests. This helps keep the project direction focused while the core experience is still being shaped.
You’re welcome to fork the project or open issues for bug reports, suggestions, or feedback.
Pretty Lattice is released under the MIT License.


