Loading library…
a quiet, powerful place for documents, images & studying
everything runs locally in your browser — files never leave your device
AI agent, PDF/Word viewer, flashcards
Save, search and reopen your work
Canvas · type text directly · Ctrl+Z
System & online natural voices
Live transcript as you speak
Combine multiple PDFs
Extract page ranges
Drag, drop, rotate pages
Write with markup — get a clean PDF
Pictures, headings & lists preserved
Stamp PDFs & Word documents
Reduce file size
View, edit, remove backgrounds
Combine images into PDF
Batch reduce image size
Re-encode MP4/MKV smaller
Extract audio from video
Shrink audio to AAC or MP3
Image format converter
Create QR codes
Split image across pages
Video converter · Doc → PDF · CSV ↔ JSON
Your saved work stays in this browser on this device.
Loading library…
Drop a PDF or Word (.docx) file anywhere in this pane, or open one. You get thumbnails, outline, full-text search, selection → AI, and one-click narration. Reader documents are read-only here, so there is no edit undo control.
Ask anything about what you’re studying — pick AI or Web below the box. Answers stream in live as they’re written. Select text in the Reader for one-tap Explain.
Streams a natural-sounding voice from a free Google service; the browser can’t install voices itself. If the service is blocked it falls back to the system voice automatically. Natural / Neural / Microsoft system voices are sorted to the top of the list.
A slower pace inserts natural pauses between phrases and sentences — ideal for writing along. Speech speed itself changes only gently.
Open a PDF, Word file or plain text — or paste anything — and it will be read aloud, sentence by sentence, with the current line highlighted.
Load text — articles, notes, study material — and Lumen will turn it into flashcards for spaced repetition review.
Tap the card to reveal the answer
Stack any number of PDFs into one file, in order.
or click to choose — add as many as you like
Extract ranges, or burst a PDF into parts.
or click to choose one
Drag pages into a new order, rotate or delete them.
or click to choose one
Write with markup — get a clean, paginated PDF.
Markup: # h1 · ## h2 · ### h3 · **bold** · *italic* · `code` · > quote · - list · 1. list · --- rule · ``` code block```
Standard PDF fonts cover Latin scripts — other writing systems become “?”.
Pictures, headings, lists, bold & italic are preserved — margins on every side.
.docx — with its images, in their original order
Stamp text across every page of a PDF or a Word document.
.pdf · .docx — Word is converted first, pictures intact
Clean up the structure, or rasterise pages for real savings.
or click to choose one
A genuine FFmpeg re-encode — with a cancel button, because in-browser encoding is slow.
mp4, mkv, webm, mov — re-encoded locally, never renamed
H.264 with the fastest preset. Honest speed note: browser FFmpeg encodes roughly at (or slower than) real-time — a 5-minute clip can take 5+ minutes. Use Cancel if you change your mind; the engine reloads on the next run.
Re-encode any audio or video’s sound at a smaller bitrate.
mp3, m4a, wav, flac, ogg — or a video file (sound only)
Real FFmpeg re-encoding, on this device. MP3 uses the LAME encoder; if your build lacks it, the tool falls back to AAC automatically.
Zoom (wheel or pinch), crop, draw, remove backgrounds, invert — every pixel stays local.
or click to choose, or paste from the clipboard (Ctrl+V) — PNG, JPEG, WebP, GIF
Combine images into one tidy document.
or click to choose — PNG, JPEG, WebP, GIF, BMP
Batch-shrink images and see exactly how much you saved.
or click to choose — add as many as you like
Pull the sound track out of any video — decoded locally, exported as WAV.
or click to choose — mp4, webm, mov, mkv, mp3, m4a, wav…
PNG, JPEG and WebP — one file or a whole batch.
or click to choose — add as many as you like
Crisp codes as PNG or SVG — links, Wi-Fi, text, anything.
Split one image across printable pages — cut lines automatically avoid slicing through words.
or click to choose one
Drop any file in — get a useful format out. All conversions run on this device.
or click to choose — images, audio/video, txt/md, csv, json, docx
Connect this website to Ollama on your computer.
Only one usage of each socket address means Ollama is already running on port 11434. Do not start a second copy. The command failed because the first Ollama process already owns that port.
Ollama Desktop may run a tray app, a server process, and an updater. The server inherits environment variables from the process that launches it. Changing the user environment in Windows does not update an already-running tray app.
PS C:\...> prompt text, and do not type Markdown links into commands.Do not run a second ollama serve while the Desktop app is running. The Desktop app will spawn the one server that owns port 11434. A bind error means another server is already using that port.
Open this address on the same computer:
You should see JSON containing installed models. Your result showing TcpTestSucceeded : True means IPv4 is working. The warning for ::1 only says IPv6 localhost is unavailable; it is harmless because Ollama is listening on 127.0.0.1. Run:
The second command should show TcpTestSucceeded : True.
To verify the browser origin specifically from PowerShell, use curl.exe, not curl (PowerShell aliases curl to another command):
The result should be 200. To inspect the allowed-origin header:
Look for Access-Control-Allow-Origin: https://lumendesk.pages.dev. This confirms the running server, not only the registry, has the correct setting.
When this website is open on the same computer as Ollama, use:
Do not open Lumen.html by double-clicking it for Ollama. A file:// page sends the browser origin null, so Ollama can return 403 even when its server is healthy. In the Lumen folder, run:
Then open http://localhost:8000/Lumen.html. In AI Providers, choose Ollama, press ↻ live, select an installed model, then press Test.
On a phone, localhost means the phone itself, not your computer. Replace it with your computer's LAN IPv4 address. In PowerShell, type:
Find the section for the connection you are actually using, usually Wireless LAN adapter Wi-Fi. Copy the value beside IPv4 Address, for example 192.168.0.110. Ignore Default Gateway, IPv6 addresses, and disconnected adapters.
ipconfig and find the active adapter's IPv4 address, such as 192.168.1.20.http://192.168.0.110:11434, substituting your own IPv4 address if it differs.11434 through Windows Firewall.If the error says allow file://, that is a file-page limitation: the browser actually sends Origin: null. Use the localhost Python server above instead of trying to add file://. This website is now hosted at https://lumendesk.pages.dev; for its deployed version, the exact Ollama origin is https://lumendesk.pages.dev without the /#/home hash. If the error happens on http://localhost:8000 or the deployed HTTPS page, stop the background process with Stop-Process -Name ollama -Force, set OLLAMA_ORIGINS, then start exactly one ollama server and press ↻ live again.
Also check that the URL uses the correct protocol, address, and port. This website must be opened over http://localhost or your normal HTTPS address, not an unreachable computer name.
Use a model shown by ollama list. Smaller models start faster and use less memory. After the model list appears in Lumen, select the exact provider/model from the AI model selector before using Chat, summaries, quizzes, or flashcards.
For setup or debugging, you can ask ChatGPT, GitHub Copilot, Codex, an Antigravity-style coding agent, or another trusted coding assistant to inspect the exact error. Share the command output and environment details, but remove API keys, passwords, private file paths, and personal network details unless they are necessary. Ask the assistant to give one command at a time and to preserve the existing Lumen file rather than rewriting it.
OLLAMA_ORIGINS configured.ollama list and pull at least one model.$env:OLLAMA_ORIGINS is already set.