Unicode Lossful Format (ULF)
A deliberately silly text-based video format. ULF represents video frames using Unicode characters, choosing glyphs that visually resemble parts of the original image.
It supports audio, delta-frame compression, GPU acceleration, and MP4 export.
Comparison
Requirements
Python 3.10+.
Install the package (with all optional playback features):
python -m pip install "unicode-lossful-format[all]"
FFmpeg must be installed and available on your system PATH for MP4 export.
It is an external system dependency and is not installed by pip or by any ULF
extra. Verify it with ffmpeg -version before using ulf convert or
ulf.convert().
Encode
ulf-encode input.mp4 output.ulf --size 80x40
Options
--size WIDTHxHEIGHT: Character-grid resolution (default:80x40).--fps N: Output frame rate.--font PATH: Font used for glyph matching.--every N: Encode every Nth source frame.--backend auto|vulkan|cpu: Select processing backend.--keyframe-interval N: Set the interval between full frames.--mute: Disable audio.--audio-waves N: Set audio reconstruction detail.--emojiless: Exclude emoji characters.--hackerman: Use printable keyboard ASCII characters only.--debug: Enable diagnostic output.
Play
ulf-play output.ulf
Options
--window WIDTHxHEIGHT: Set playback window size.--font PATH: Select playback font.--backend auto|vulkan|cpu: Select playback backend.--mute: Disable audio.--debug: Enable diagnostic output.
Convert to MP4
ulf convert output.ulf output.mp4 --encoder auto --export-quality high
The legacy equivalent remains ulf-play output.ulf --export output.mp4.
Python API
The same options are available as keyword arguments, using underscores in place of CLI hyphens:
import ulf
ulf.encode("example.mp4", "example.ulf", size="80x40", backend="auto")
ulf.play("example.ulf", window="1280x720", mute=False)
ulf.convert("example.ulf", "example.mp4", encoder="auto", export_quality="high")
encode() derives an .ulf output path when its output argument is omitted.
convert() requires FFmpeg on your system PATH, just like the CLI.
File format
ULF files use the .ulf extension and are stored as UTF-8 text.
The format uses the ULF/1.0 signature and supports full-frame and delta-frame video, with optional audio data.
Limitations
- Video is grayscale.
- Audio reconstruction is lossy.
- Visual quality depends on the selected font and renderer.
- Vulkan requires compatible hardware and drivers.
- MP4 export requires FFmpeg.
- Large resolutions can increase processing time and file size.
Have fun
ULF makes video less efficient on purpose.
Now with compression, GPU acceleration, sound, and MP4 export!
Metadata
Release files for ulf 0.1.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 | Provenance | Actions |
|---|---|---|---|---|
| ulf-0.1.0.tar.gz | 38.8 kB | Without provenance | Details for ulf-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| ulf-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for ulf-0.1.0-py3-none-any.whl |
Total release size: 79.0 kB
Release files / ulf-0.1.0.tar.gz
| Download URL | ulf-0.1.0.tar.gz |
|---|---|
| Size | 38.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a168d065d701f6e485f2138c36da4d1ae3bc06e8b1e2d99b94bf5536d8ae159b
|
|
BLAKE2b-256 checksum How to use checksums |
e98015eee7c2017520d53093accadd37e06242bd8bb16b83bc4d074b7e35e273
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.7
|
Release files / ulf-0.1.0-py3-none-any.whl
| Download URL | ulf-0.1.0-py3-none-any.whl |
|---|---|
| Size | 40.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f04a3b34fb5f2b51dfb024a12dfc7c185734cd389b9ad7578770d75e478a5e46
|
|
BLAKE2b-256 checksum How to use checksums |
73dc0260178bd341d4f6a1c5f22ee74caf2a1cbab0e96ac1ab7653d4617bb74d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.7
|
Security for ulf 0.1.0
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.