uxaudit
UX/UI audit tool that captures screenshots and analyzes them with Gemini.
Highlights
- Full-page and section screenshots with evidence links.
- Multi-page crawling from header, nav, and footer.
- Structured JSON output for agents and pipelines.
Requirements
- Python 3.10+
- Playwright browsers:
playwright install - Gemini API key:
GEMINI_API_KEY(orGOOGLE_API_KEY)
Install
PyPI
python3 -m pip install uxaudit
Editable (dev)
python3 -m pip install -e .[dev]
Usage
export GEMINI_API_KEY="your-key"
uxaudit analyze https://example.com --model flash
Outputs are written to runs/<run_id>/ with manifest.json and report.json.
Redesign mode (visual alternatives)
Generate bold, visual redesign concepts plus NanoBanana-ready prompts:
uxaudit redesign https://example.com \\
--variants 4 \\
--goals "premium, conversion-focused" \\
--style-notes "bold typography, large imagery" \\
--constraints "keep logo, keep primary CTA"
Outputs are written to runs/<run_id>/ with redesign.json and a local preview
at redesign/index.html. By default, uxaudit auto-generates renders using
Gemini image generation (NanoBanana Pro) with the same API key. To skip auto
rendering, use --render-mode none. You can override the image model with
--render-model (default nano-banana-pro maps to gemini-3-pro-image-preview).
Save or replace visuals at redesign/concept-<page>-<index>.png
to update the preview.
Crawling multiple pages
uxaudit analyze https://example.com --max-pages 5
Style consistency analysis
By default uxaudit runs a cross-screenshot style consistency pass. You can disable it or tune the batch size:
uxaudit analyze https://example.com --no-style-consistency
uxaudit analyze https://example.com --style-consistency-batch-size 10
Login (form-based)
# Example with fake credentials
export UXAUDIT_AUTH_USERNAME="alex.rios@example.test"
export UXAUDIT_AUTH_PASSWORD="P@ssw0rd-Example-123"
uxaudit analyze https://demo.example.test \\
--auth-mode form \\
--auth-login-url https://demo.example.test/login \\
--auth-post-login-url https://demo.example.test/app \\
--auth-username-selector "#email" \\
--auth-password-selector "#password" \\
--auth-submit-selector "button[type=submit]" \\
--auth-success-selector ".dashboard"
Login (storage state)
uxaudit analyze https://app.example.com \\
--auth-mode storage_state \\
--auth-storage-state /path/to/storage_state.json
Development
ruff check .
ruff format .
mypy uxaudit
pytest
Project links
- Source: https://github.com/albertoburgosplaza/uxaudit
- Issues: https://github.com/albertoburgosplaza/uxaudit/issues
- Changelog: https://github.com/albertoburgosplaza/uxaudit/blob/main/CHANGELOG.md
CLI options
uxaudit analyze --help
Metadata
Release files for uxaudit 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| uxaudit-0.2.0.tar.gz | 31.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| uxaudit-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 63.9 kB
Release files / uxaudit-0.2.0.tar.gz
| Download URL | uxaudit-0.2.0.tar.gz |
|---|---|
| Size | 31.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d334a2701a4ba820e74f12d2eed85b8912e7ac0ca7f28e6d2d5a46e811d73e43
|
|
BLAKE2b-256 checksum How to use checksums |
23a10f4496421866bcbd66b79196f5a33563037ebe5e1f5bba27036d7c4c86af
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Dec 31, 2025.
Transparency logRelease files / uxaudit-0.2.0-py3-none-any.whl
| Download URL | uxaudit-0.2.0-py3-none-any.whl |
|---|---|
| Size | 32.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9f2a0422928486e93b9656a6cf57b2213e7909f551d4faafb4b4bdcb6b94a20a
|
|
BLAKE2b-256 checksum How to use checksums |
2acabdf85715f600bd7e568b396827ea1ca4f4869322f1c433f715731966abb0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Dec 31, 2025.
Transparency log