Offline AI images and video on Android: What each Snapdragon can actually handle
Three hobby apps bring big image and video models like Qwen-Image 2.1, FLUX.2 Klein, Wan 2.2 and MiniMax H3 to your smartphone – no cloud required. They do it by tapping the phone's AI chip, the NPU. We sorted out what runs on which Snapdragon generation and how long it takes. We also show where the developers' claims contradict each other and which licensing traps await users in the EU.

What this is about
Just a year ago, Stable Diffusion 1.5 was the best a phone could manage for offline image generation. Now three hobby projects are bringing much larger models to Android smartphones: Local Dream by xororz, its fork Nightmare Mobile by AbrahamPaulJ, and the new HexAnima by ayanoby. The work runs on the NPU, the AI accelerator in the chip that multiplies matrices faster and more efficiently than the CPU or GPU. Qualcomm calls this block Hexagon.
The trigger: on November 8, HexAnima version 1.4.0 added Qwen-Image 2.1 Turbo for phones with the 2022 Snapdragon 8 Gen 1. Nightmare Mobile now even offers video models such as Wan 2.2 14B and MiniMax H3 (video with audio). We compiled the claims from READMEs, release notes, issues and user reports. We didn't run our own measurements. All timings come from the developers or individual users.
Which app runs on which chip
What matters is the Hexagon NPU generation. Each one needs specially compiled code. The mapping according to the llama.cpp developer docs: V68 is in the Snapdragon 888, V69 in the 8 Gen 1/8+ Gen 1, V73 in the 8 Gen 2, V75 in the 8 Gen 3 and V79 in the 8 Elite.
| Chip (Hexagon) | Local Dream | Nightmare Mobile | HexAnima |
|---|---|---|---|
| 888 and others from V68 | SD 1.5 (NPU) | SD 1.5 | – |
| 8 Gen 1 / 8+ Gen 1 (V69) | SD 1.5 (NPU) | SD 1.5; Anima on CPU only; FLUX.2 Klein 4B on GPU (time unknown) | Anima 2B/2.9B, MOSS-Image 5B, Qwen-Image 2.1 Turbo, all on the NPU |
| 8 Gen 2 (V73) / 8s Gen 3 | SD 1.5 (NPU) | plus Z-Image Turbo, FLUX.2 Klein 4B/9B, Anima Turbo | not supported |
| 8 Gen 3 (V75) | plus SDXL, Anima | plus SDXL, Qwen Image 2.1, MOSS-Image, FLUX.3 Klein, MiniMax H3 (12 GB RAM); Wan 2.2 alpha only | not supported |
| 8 Elite (V79) | DiT models: Z-Image Turbo, FLUX.2 Klein 4B/9B, FLUX.3 Klein, Qwen Image 2.1 Turbo, Krea 2 Turbo | plus FLUX.1 dev, Ideogram 4, Neodragon-Video, NitroFusion 2 | support withdrawn in 1.2.2 |
| 8 Elite Gen 6 (SM8950/8975) | NPU libraries since Alpha 6, “not yet tested on a real device” | listed, dedicated DiT build | – |
DiT stands for Diffusion Transformer, the architecture behind almost every new image model since SD 1.5 and SDXL. The exceptions matter: on the 8s Gen 3 and 8s Gen 4, Nightmare disables the NPU's matrix unit for DiT models because the image otherwise “comes back gray or as noise.” The images are then correct but take minutes. Iris 3B Turbo produces nothing but noise there with every method tested.
How long an image or clip takes
| App | Chip / device | Model | Format | Time |
|---|---|---|---|---|
| HexAnima | 8+ Gen 1 (Xiaomi 12T Pro) | Anima 2B, 4 steps | 512×768 | approx. 7 s |
| HexAnima | 8+ Gen 1 | MOSS-Image 5B | 512×768 / 1 MP | approx. 30 s / 80 s |
| HexAnima | 12 GB phone, 8 Gen 1 class | Qwen-Image 2.1 Turbo | 512×768 | approx. 40–50 s, editing 40–70 s |
| Nightmare | 8 Gen 1 (CPU) | Anima 2.9B / Turbo | 512×512 | 15–20 min |
| Nightmare (user) | Zenfone 10, 8 Gen 2 | Anima Turbo Q4_0 | 512×512 | 46.3 s |
| Local Dream (user) | 8 Gen 3 | SD 1.5, 28 steps | 768×512 | approx. 10 s |
| Local Dream (user) | 8 Gen 3 | SDXL, 18 steps | 1024² | 29–35 s |
| Nightmare | 8 Elite | FLUX.3 Image Klein, 16 steps | 512² / 1024² | approx. 45 s / 2 min |
| Nightmare | S25 Ultra (GPU) | FLUX.2 Klein 4B | 1024² | approx. 4 min |
| Nightmare | 8 Elite | FLUX.1 dev | 1024² | approx. 6 min |
| Anima app (HF conversion) | 8 Elite | Qwen-Image 2.1, 4 steps | 768² | approx. 1:20 min |
| libQwenImage21 (GPU) | 8 Gen 2 | Qwen-Image 2.1 int4 Turbo | approx. 512² | approx. 220 s |
| Nightmare | 8 Elite | Wan 2.2 TI2V 5B | 5 s, 832×480 | under 3 min |
| Nightmare | 8 Elite | Wan 2.2 14B | 2 s, 480×832 | approx. 9 min |
| Nightmare | 8 Elite | MiniMax H3 with audio | 3 s, 384² / 832×480 | approx. 6 / 13 min |
So for video: a few seconds at low resolution take five to thirteen minutes. That's an experiment, not a work tool. For 8 Gen 3 phones, Nightmare says in release 1.6.262 that the MiniMax H3 timings have “not yet been tested on real hardware.” According to release 1.6.281, Wan 2.2 14B produces noise there for image-to-video, “not yet fixed.”
Where the claims contradict each other
The 8 Gen 1: HexAnima reports Anima images in 7 seconds on the NPU of the 8+ Gen 1. Nightmare Mobile writes about the same chip:
On the testers' phones, the NPU never finished a single DiT step there.
That's why Nightmare runs Anima on the CPU there, at 15 to 20 minutes per image – a difference of more than 100x. Our take: both can be true, because two different engines are involved. HexAnima is tailored exclusively to V69. Its release notes, for example, mention a dedicated fix for unpacking 8-bit weights “on V69.” But HexAnima's numbers haven't been independently confirmed. The developer has only tested on a 12 GB phone and is asking for reports from other devices on Reddit.
“20B” or 7B? HexAnima talks about a “20B transformer.” According to the official Model Card, however, the image component of Qwen-Image 2.1 has 7 billion parameters across 32 layers, plus the Qwen3-VL-8B text encoder. The 20B figure belonged to the first Qwen-Image. The fact that Local Dream ships the Qwen 2.1 weights in FP8 as a roughly 7 GB file fits 7B. It's still impressive: together, that's around 15 billion parameters on a phone from 2022.
8 Elite: HexAnima introduced support and withdrew it again within two days. Version 1.2.1 promised 6 seconds per image. Then 1.2.2 pulled it: on a Galaxy S25, the matrix unit was temporarily unavailable after an aborted run, and large formats produced noise. In Local Dream, according to the release notes, the DiT models only run from the 8 Elite (SM8750) onward, while Nightmare promises some of them from the 8 Gen 2. Adding to the confusion, Qualcomm's docs credit every generation from V68 onward with the HMX matrix unit. Why things still break on individual chips hasn't been publicly explained.
The memory trick: 14 GB model, 1.2 GB RAM
How does a model weighing many gigabytes fit into a phone that shares its RAM with Android? The apps split it into blocks and load them one after another from flash storage. This is called weight streaming. For Qwen-Image, HexAnima rereads the roughly 14 GB “for every image,” while RAM usage stays at about 1.2 GB. Nightmare always streams MiniMax H3 block by block, and for Wan 2.2 14B it loads two 14B models in succession from storage so it runs on 12 GB phones.
One reason is spelled out in Nightmare's 1.6.138 release notes: the NPU's memory window had to be raised from 2 to 2.75 GB so that a 2.6 GB decoder would fit. In other words, the NPU can only address a few gigabytes at once. One user in issue #97 suspects the DSP's 32-bit address space is the cause. That's unconfirmed.
Doing the math: 14 GB in about 40 seconds works out to an average read speed of at least 350 MB/s. Modern phone storage can handle that. Unlike writing, reading barely wears out flash storage. You pay in download size and storage space instead: 14 to 15 GB for Qwen-Image, 17.5 GB for MiniMax H3, around 21 GB for Wan 2.2 14B.
The traps hardly anyone mentions
- Snapdragon only: On phones with MediaTek, Exynos or Google Tensor chips (Pixels, for example), Nightmare offers no downloads. All you can do there is import SDXL or SD 1.5 models and run them on CPU or GPU. A Japanese tester only got anywhere on a Dimensity 7300 with SD 1.5 at 256×256 pixels. Local Dream offers a workaround with “Device link”: the controlling device doesn't need a Qualcomm chip, but the computing happens on a Snapdragon device on the same Wi-Fi.
- Licenses: Local Dream and Nightmare are licensed under CC BY-NC 4.0, meaning non-commercial use only. HexAnima is MIT-licensed. As for the models: Qwen-Image 2.1 uses the Qwen Research License (research and evaluation only). FLUX.2 Klein 9B, FLUX.1 dev, Ideogram 4, Fibo 2.0 and Anima are non-commercial. FLUX.2 Klein 4B and MOSS-Image, on the other hand, are freely usable under Apache 2.0.
- MiniMax H3 and the EU: The license defines the EU, the UK, South Korea and the US as “Excluded Territories.” That explicitly covers use of the generated clips, too. Nightmare makes users accept these terms before downloading. So if you're in Germany or elsewhere in the EU, you're not licensed. On top of that, the phone doesn't run the original: instead of the 32B text encoder, Nightmare uses a Qwen3-VL-4B with an adapter. According to the Model Card, the model is a FastH3 version distilled to 4 steps.
- Heat and crashes: Nightmare warns at battery temperatures of 40 and 45 °C and can pause video generation. Users report noise images on an 8 Elite with 16 GB RAM (issue #84). Local Dream has an open issue about out-of-memory crashes with Qwen Image 2.1 in under 30 seconds. HexAnima has a crash report on an 8 GB phone.
For comparison: iPhone
On iOS, according to the App Store, Draw Things now also supports Qwen Image 2.1, Wan 2.2, MiniMax H3 and FLUX.3 Klein. We found no reliable iPhone timings for these models. One user reports around five minutes and 7 percent battery for a 512-pixel SD image but doesn't name the device. Our take: Apple doesn't have the many-chip-generations problem to the same degree. But memory, heat and licenses remain the limits there, too.
Our verdict
If you own a Snapdragon 8 Gen 1 or 8+ Gen 1, HexAnima is the most surprising option. If the developer's numbers hold up, modern DiT models run there in seconds to under a minute. Nobody has independently confirmed that yet. On the 8 Gen 3, SDXL images in about 30 seconds are the most reliable state of play. The 8 Elite offers the broadest feature set, with videos in minutes rather than seconds. Anything older, or without a Snapdragon, is stuck with SD 1.5.
Our overall take: technically, this is remarkable; practically, it's a tinkerer's playground. Many features are labeled alpha or “not tested on a real device.” Every new chip generation needs its own code, and licenses lock Europe out of the most spectacular video model of all.
Sources
- GitHub: ayanoby/hexanima github.com
- GitHub: HexAnima Releases github.com
- GitHub: AbrahamPaulJ/nightmare-mobile github.com
- GitHub: Nightmare Mobile Releases github.com
- Nightmare Mobile Release 1.6.262 (MiniMax H3) github.com
- Nightmare Mobile Release 1.6.138 (8 Gen 3, NPU-Speicherlimit) github.com
- Nightmare Mobile Issue #97 (Zenfone 10, 8 Gen 2) github.com
- Nightmare Mobile Issue #84 (MiniMax H3 auf 8 Elite) github.com
- GitHub: xororz/local-dream github.com
- GitHub: Local Dream Releases github.com
- Local Dream Issue #337 (Qwen Image 2.1 Abstürze) github.com
- note.com: Local Dream Test auf Snapdragon 8 Gen 3 note.com
- GitHub: happyyzy/local-dream (Benchmarks) github.com
- Hugging Face: AbrahamPJ/fasth3-dense-v1-q4_0-gguf huggingface.co
- Hugging Face: Qwen/Qwen-Image-2.1 huggingface.co
- Hugging Face: sebekblessing/image21-qnn-8elite huggingface.co
- GitHub: scsonic/libQwenImage21 github.com
- CSIDIA: MiniMax H3 Lizenz schließt EU aus csidia.com
- Qualcomm-Doku: Hexagon-Architekturversionen (HVX/HMX) docs.qualcomm.com
- App Store: Draw Things apps.apple.com
- Reddit: Qwen-Image 2.1 Turbo läuft auf Handy-NPU (HexAnima) reddit.com
Ask the AI assistant
Questions about this article, installation or background? Our assistant knows this page and runs on our own machine, not in someone else's cloud.
The Assistant is an AI (Gemma 4) and can make mistakes – please check important details against the source. Questions are used only to generate an answer and are deleted after one hour. Please don't enter any personal data.
Comments
What do you think? Already tried it? Write it here, no sign-up needed.
Comments are public. Links aren't allowed, and we delete abusive posts. You can delete your own comment at any time in this browser. Learn more in the Privacy Policy.