Pixiv Viewer Kai: a self-hosted PWA for browsing Pixiv, with local manga translation
Yet Another Pixiv Illust&Novel Viewer. 又一个 Pixiv 阅览工具,提供 pixiv 的插画、动图、漫画和小说等作品的在线浏览,适配多端样式,提供多种浏览布局选择,支持 PWA 安装,支持自定义 API 与图床,支持 RefreshToken/OAuth/Cookie 方式登录。
At a glance
- What is it?
- Pixiv Viewer Kai is a Vue 2.7 progressive web app for reading Pixiv illustrations, animations, comics and novels, with multiple layouts, PWA install and a configurable backend. The unusual part is the manga translation engine, which runs text detection, OCR and image repair in the browser through ONNX Runtime Web and then translates through an LLM provider of your choice.
- Who is it for?
- Adopt Pixiv Viewer Kai if you want a private, self-hosted way to read Pixiv material with an interface you control, since the API instance, the image host, the login method and the translation provider are all configuration rather than hard-coded choices. Do not adopt it as the basis of a commercial product without reading the AGPL-3.0 terms, and note that the illustration content it displays belongs to Pixiv rather than to the project.
- Can I use it commercially?
- Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
- Is it still maintained?
- Yes. The repository last received commits 7 days ago.
- What is it written in?
- Mainly JavaScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.
Editorial analysis
A port with its own identity
The project calls itself Yet Another Pixiv Illust and Novel Viewer, and the README is clear that it is a port of journey-ad/pixiv-viewer rather than an original design. The fork is called Kai, and the name is the only flourish in an otherwise utilitarian README. What the tool does is browse Pixiv content: illustrations, animated works, comics and novels. The description in Chinese lays out the scope as online viewing of Pixiv illustrations, animations, comics and novels, adaptation to multiple device styles, several browsing layout choices, PWA installation, customisable API and image host, and login through RefreshToken, OAuth or Cookie. So it is a front end for Pixiv that you host yourself, with the pieces that usually point at Pixiv's own servers pointing wherever you tell them to point.
Three login methods, and the one the project recommends
The settings section lists three ways in. RefreshToken login uses a Pixiv RefreshToken directly, OAuth login goes through Pixiv OAuth authorisation, and Cookie login is marked as not recommended. That ordering is a design opinion rather than an accident. A refresh token is a credential you hold and can revoke, OAuth is the sanctioned flow, and a pasted session cookie is the fragile one because it expires silently and has to be re-harvested. The feature list also notes that a refresh token can be exported for use by other applications, which confirms that the token is treated as a portable credential in the data model rather than as a per-session artifact. The cloud sync feature is the other place credentials matter, and it is described as PBKDF2 plus AES encryption with conflict detection and smart merge, with two-way authentication and scope selection.
Everything points at a configurable backend
The environment example file is the clearest description of the architecture, and it is worth reading as a whole. There is a default API instance variable, with a note that the PxveAPI interface is compatible with HibiAPI so that if you have self-hosted PxveAPI you no longer need HibiAPI, and a repository link for that project. There is a default pximg image proxy variable and a preset list of image proxies in a name and host format. Then there is the AppAPI proxy, which needs to satisfy a format, with worked examples showing how the OAuth token URL and the illust ranking URL map onto a proxy path. Finally there is a general proxy variable and a general image proxy variable that falls back to the general proxy when empty. The app is therefore a static bundle plus a set of URLs, and the URLs are the configuration surface.
The manga translation engine runs in the browser
This is the feature that separates the project from a plain gallery. The comic translation engine is described as ONNX Runtime Web doing local inference over WebGPU or WASM, with inference on a worker thread through Comlink so the main thread is not blocked, and a pipeline of text detection, PaddleOCR recognition and image repair. The translation itself comes from multiple LLM providers, with SiliconCloud named alongside others such as DeepSeek and OpenAI, so the OCR stage is local and the language stage is a remote call. The layout engine handles horizontal and vertical text and matches balloons to a reading order, and there is a one-click switch between the original and the translation. The model weights are the deployment concern. The environment file describes a manifest at public/models/models.json tracked in git, with the ONNX binaries fetched at deploy time into public/models, which is gitignored, and a release tag variable that rewrites manifest URLs to GitHub release assets, plus an optional custom URL template.
Novel reading with export in six formats
The novel side is treated as a reading application rather than a text dump. Download covers TXT, HTML, Markdown, DOC, PDF and EPUB, reading settings let you set the font, colour and reading direction, rich text formatting is rendered, and the reading progress is remembered so you resume where you stopped. There is a native reader for an immersive WebView experience and an integrated online translation for novels. The illustration side has its own download pipeline: animated works play as Ugoira, and the download formats are ZIP, GIF, WebM, APNG, MP4 and AVIF, with the JavaScript side built on gif.js for GIF, ts-whammy for WebM and modern-mp4 for MP4, plus the original ZIP file. That is a genuinely useful set of choices, since animated Pixiv works are delivered as ZIP archives of frames and most tools give you only the archive.
Layout engines and the Vue 2.7 stack underneath
The image feed is not a single grid. The layout engines listed are Masonry for the waterfall arrangement, Grid, Justified for the both-ends-aligned arrangement, VirtualList and VirtualSlide for a virtual carousel, and the settings list offers a waterfall, grid and virtual list as the picture feed layout, plus a choice of image quality such as Medium, Large and Large in WebP. The stack is Vue 2.7 with the Composition API available, Vue Router for single page routing with aliases and history, Vuex for centralised state with settings persistence, and Vue I18n for localisation. The UI is Vant UI with Stylus for styling and responsive breakpoints for phone, tablet and desktop. The performance notes mention lazy loading of images on mobile by default, virtual scrolling for large lists, View Transitions API for route changes and code splitting to load parts of the bundle on demand.
Installed as an app, cached locally, synced with encryption
The PWA support is described in three parts: a service worker with offline access and caching strategy, an app shell architecture to speed up first paint, and install prompts on both desktop and mobile, with application shortcuts for search, ranking, feed and settings. The client support table lists PWA installation, Android and Windows, and iOS and macOS, all marked as supported. Storage is LocalForage wrapping IndexedDB, with LocalStorage and SessionStorage also supported, plus an IndexedDB cache for faster loading, a browse history, and a one-click cache clear. Backup and restore covers settings, browsing history and a cloud sync option that encrypts with PBKDF2 key derivation and AES, detects conflicts on a 409 and merges them. There is also a Tampermonkey path for downloading and a filename template setting, alongside the WICG File System Access API for writing straight into a local directory.
Where this project is the wrong choice
Five limits apply. First, the content is not yours. The project is a viewer for material hosted on Pixiv, and the disclaimer section in the README is there for a reason, so a viewer is not the same thing as a source of works you can redistribute. Second, the licence. The package metadata records AGPL-3.0-only, which is a strong copyleft, and the AGPL obligations around network use are exactly the ones a hosted viewer can trip over. Third, the backend dependency. The default configuration points at somebody else's PxveAPI instance, and self-hosting that is a separate project with its own maintenance, so the honest cost of running this privately includes running or maintaining two things rather than one. Fourth, the translation engine is a pipeline of several models and a remote LLM call, which means it needs a capable device and a paid provider key, and the browser-side OCR is not going to be as accurate as a desktop tool. And fifth, it is built on Vue 2.7 with Vant UI 2, a combination that works today but sits at the end of its support life, so a fork that intends to last should port rather than extend.
Editorial conclusion
Adopt Pixiv Viewer Kai if you want a private, self-hosted way to read Pixiv material with an interface you control, since the API instance, the image host, the login method and the translation provider are all configuration rather than hard-coded choices. Do not adopt it as the basis of a commercial product without reading the AGPL-3.0 terms, and note that the illustration content it displays belongs to Pixiv rather than to the project. Verify first which backend you point it at, because the default is a third-party instance rather than your own, that the ONNX models are fetched at deploy time into a directory that is gitignored, and that the refresh token login path, which is the recommended one, works for your account before you invest in the translation pipeline.
Frequently asked questions
What is Pixiv Viewer Kai and what is it based on?
It is a Pixiv browsing tool for illustrations, animated works, comics and novels, and the README describes it as a port of journey-ad/pixiv-viewer. It is a Vue 2.7 progressive web app that can be installed on desktop and mobile and self-hosted.
How do you log in to Pixiv Viewer Kai?
There are three methods: RefreshToken login, OAuth login, and Cookie login, which the README marks as not recommended. It also supports exporting the refresh token for use by other applications.
How does the manga translation feature work?
Text detection, PaddleOCR recognition and image repair run locally in the browser through ONNX Runtime Web on WebGPU or WASM, with inference on a worker thread via Comlink. The translation itself goes to an LLM provider such as SiliconCloud, DeepSeek or OpenAI, and the engine lays out horizontal or vertical text matched to the balloon reading order.
Can I point Pixiv Viewer Kai at my own backend?
Yes. The environment example defines the default API instance, a default pximg image proxy with a preset list of alternatives, the AppAPI proxy, and general proxy and image proxy variables. PxveAPI and HibiAPI are interface compatible, so a self-hosted PxveAPI means you no longer need HibiAPI.
What licence is Pixiv Viewer Kai released under?
The package metadata records AGPL-3.0-only, and the repository carries a LICENSE file and a THIRD_PARTY_NOTICES file. The releases include v1.37.6 from 2026-10-01 and v1.37.5 from 2026-09-24.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/asadahimeka-pixiv-viewer)Was this useful?