Study Workspace
AI agent, PDF/Word viewer, flashcards
Quiz
Interrogate what you read, from the Reader or pasted text
Exam Mode
Timed paper · question palette · mistake analysis
Local Library
Save, search and reopen your work
Clock
Zen clock · timer · stopwatch
Whiteboard
Canvas · type text directly · Ctrl+Z
Interactive Diagrams
AI-drawn study diagrams · move, label, quiz yourself
Simulations
Game of Life · Mandelbrot · predator and prey · solar system · chaos, or describe anything else
File Narrator (TTS)
System & on-device neural voices
Dictation
Live transcript as you speak
Chatbot
AI study companion · ask, discuss, explore
Ask & Learn
Ask a question · practise eight kinds of question · build a course from a topic
Transcript Analysis
Paste any transcript → summary, quiz, flashcards, notes
Calendar
Exams · deadlines · reminders that stick
Timetable Studio
Describe your routine, get a real timetable built around your fixed commitments
Date Sheet
A revision date sheet for exam classes, analysed from your syllabus
Tasks & Notes
Tasks · timers · alarms · sticky notes
To-Do List
A fast, focused checklist, separate from Tasks
Document Generator
8 ready templates: agreements, stories, essays, reports, letters, resumes, minutes
Professional Document Engine
AI-planned, typeset PDFs, Text-to-PDF + real XeLaTeX
Video Generator
Praxis, AI lesson becomes an animated video with narration, diagrams and captions
SVG Generator
AI text-to-SVG, icons, illustrations, logos and more
Slideshow
Open a PDF, present it fullscreen, annotate with the full whiteboard
PDF Editor
Edit text · annotate · highlight · insert images and shapes
PDF Merge
Combine multiple PDFs in order
PDF Split
Extract ranges · burst to ZIP
PDF Reorder
Drag · reverse · rotate · delete pages
Reverse PDF
Flip pages from last to first
Dual Page
Split a PDF into odd & even halves for manual duplex , with delay pages and reverse order
Text → PDF
Auto-structures plain text · headings · bullets · tables · Markdown & math
LaTeX → PDF
\section · \item · \textbf · tabular · math, compiled locally
Word → PDF
Pictures, headings & lists preserved
Watermark
Stamp PDFs & Word documents
PDF Compressor
Re-encodes embedded images, keeps text sharp
PDF Unlocker
Remove owner-password restrictions
OCR & Text Extraction
Read every word from an image or a scanned PDF
Image Viewer / Editor
View, edit, remove backgrounds
Images to PDF
Combine images into PDF
Image Compressor
AVIF, WebP, MozJPEG, sized by measured quality
Video Compressor
H.264, VP9, AV1, best of several encodes
Audio Extractor
Extract audio from video
Audio Compressor
Opus, AAC, MP3, FLAC + loudness
JPG ↔ PNG ↔ WebP
Image format converter
HTML Viewer
Open, render & inspect local HTML in a sandbox
QR Generator
Create QR codes
Poster Tiler
Big image → print-ready pages
MKV → MP4
Video converter · Doc → PDF · CSV ↔ JSON
No tools match “”. Try a shorter search, or clear the box to see every tool again.
SVG GeneratorAI text-to-vector
Enter a description above and hit Generate to create SVG art with AI.
Uses your configured Drazil AI provider. Download as SVG or PNG.
New lesson project
Expected lesson: at least 7 minutes
Automatic falls back to the built-in planner if no provider answers. Always require AI stops with an explanation instead of silently producing a generic lesson.
High spends more tokens and takes longer because the model plans each scene deliberately, fetches pictures and critiques its own layout once.
Off by default. When off, the library is not mentioned to the model and nothing is fetched from it, otherwise every scene reaches for the same prebuilt diagrams and the library becomes the look of every lesson. Only available in Ultra.
AI trace
Exact prompts, replies and reasoning captured from this session.
Pick how Drazil speaks
Local Library
Stored only in this browser's IndexedDB, no cookies, no server. Clearing site data wipes it; cache-only clears are safe. Use Backup JSON / Restore for a portable copy.
Loading library…
What works offline
- Everything stored on your device, Library, notebooks, quizzes, flashcards, notes, interactive diagrams, exam history, whiteboards, tasks, calendar, all previously generated content.
- All PDF tools, merge, split, reorder, watermark, compress, Markdown→PDF, Word→PDF, Images→PDF. The PDF engine is cached after first use.
- All image tools, viewer/editor, compressor, format converter, poster tiler, background remover.
- Whiteboard, diagrams, study views, exam mode, tasks, calendar, QR generator, HTML viewer.
- AI with Ollama if Ollama is running on your own computer or a machine on your LAN. Cloud AI, by contrast, needs internet.
- Dictation (Local whisper model) once the model has been downloaded at least once. Uses the browser's own engine offline too.
- Video & audio conversion once the FFmpeg core (~25 MB) has been downloaded at least once.
Requires internet: cloud AI (Gemini / OpenAI / Claude / OpenRouter), the online narrator voices, and the first-time download of the Whisper or FFmpeg engines.
Set this image as the notebook's thumbnail. It's stored in your local Library (IndexedDB) alongside the notebook, not in cookies and never uploaded.
Tasks & Notes
Tasks · timers · alarms · sticky notes, all saved locally.
Put a document on the desk
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.
Nothing in the margins yet.
Ask anything about what you’re studying, answer it with the AI provider you connected in Settings. Answers stream in live as they’re written. Select text in the Reader for one-tap Explain.
Assistant instructions
System uses only the voices this browser already has. Neural runs a natural voice model on this device, with nothing sent anywhere, and falls back to the system voice if the model cannot run. Natural / Neural / Microsoft voices sort 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.
Voice not working? Quick guide
- Pick a clear voice in the dropdown, voices named Microsoft / Natural / Neural / Google are smooth and sort to the top.
- Try the engine buttons: System forces the browser's own voices; Neural loads a natural voice model on this device. There is no online voice, because narration never leaves the machine.
- No voices at all? Your browser or OS has none installed. Add them: Chrome / Edge → Settings → Speech (or Accessibility → Speech); Windows → Settings → Time & language → Speech; macOS → System Settings → Accessibility → Spoken Content → Manage Voices; or your phone's text-to-speech settings. Then restart Drazil.
- Neural downloads its model once the first time it is used; after that it works offline. If the download is blocked, System needs no network at all.
- Still silent? Open the Chat tab and paste your exact device, browser and the message shown here into ChatGPT, Gemini or Claude and ask why speech is missing.
Nothing on the tape.
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.
Ready when you are
Microphone not listening? Quick guide
- Allow the microphone when the browser asks. Blocked it? Click the padlock / site icon in the address bar → site settings → allow Microphone, then reload.
- Drazil needs a web origin, open it over https:// or http://localhost. Local file:// pages and sandboxed editors can't reach the microphone or the local speech model.
- Auto uses a full local speech model downloaded once into private browser storage (then works offline); the Local model select picks Base (~75 MB, faster) or Small (~500 MB, more accurate); Browser uses the browser's own speech service, fastest to start but needs internet.
- Prefer all-local? Use the OS dictation instead: put the cursor in the transcript and press the system shortcut (Win+H on Windows, your phone or Mac's built-in voice typing), those speak to the system, not to Drazil.
- iOS / macOS: allow Drazil under Settings → Privacy & Security → Microphone. Low-power and battery-saver modes can pause speech models on phones.
- Still stuck? Try the other engine buttons to the right, then open Diagnostics below and press Test microphone hardware.
Diagnostics
Train your memory.
Load text, articles, notes, study material, and Drazil will turn it into flashcards for spaced repetition review.
Tap the card to reveal the answer
Turn what you read into notes.
Write your own, or let the AI draft structured study notes from the open Reader document, a selection, or pasted text, then save, rename, quiz or flashcard them anytime.
Nothing here. Add your first to-do above.
Create an exam
Generate questions from the Reader document, from a Library notebook, from an uploaded question paper, or paste your own material.
Interrogate what you read.
Make a quiz from the open Reader document or pasted text. Pick a question style and count, then Generate, Drazil writes and presents the questions, and grades your long-answer replies with your AI provider.
Document Generator
Chat-driven drafting with eight ready templates: Agreements, Stories, Academic, Research, Reports, Letters, Resumes and Meeting minutes.
Start a new document
Pick a type on the left, fill the fields, then press Generate. The document streams here and you can keep refining it in the chat box below.
Professional Document Engine
Describe the document you want. Drazil plans, designs, typesets, and exports a real PDF.
PDF Merge
Stack any number of PDFs into one file, in order.
or click to choose, add as many as you like
PDF Split
Extract ranges, or burst PDFs into parts — one file or many, same settings for each.
or click to choose as many as you like
Reverse PDF
Flip every page from last to first without changing page content.
or click to choose as many as you like, reversed one by one
PDF Reorder
Drag pages into a new order, rotate or delete them.
or click to choose one
Text → PDF
Type or paste Markdown, it renders beside you as you type, then export a clean, paginated PDF with bold, italics, code, tables and images preserved.
Formatting supported in the exported PDF: # h1 · ## h2 · ### h3 · **bold** · *italic* · `code` · > quote · - list · 1. list · --- rule · ```code``` · | table | · [link](https://…)
Supports advanced math and every single language that has a font.
Advanced
Colours , leave a swatch on Auto to follow the dark-page setting.
Word → PDF
Pictures, headings, lists, bold & italic are preserved, margins on every side.
.docx, as many as you like — pictures preserved in original order
Watermark
Stamp text across every page of a PDF or a Word document.
.pdf · .docx — as many as you like, same watermark applied to each
PDF Unlocker
Remove restrictions from PDFs that open without a password. Everything is processed locally, nothing is uploaded.
or click to choose as many as you like, owner-password restrictions are removed from each
This tool removes owner-password permissions (printing, copying, editing locks). It cannot decrypt a PDF that requires a password to open, those need the password first.
Image Viewer / Editor
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
Breathe. The next minute is already on its way.
Ready
Images to PDF
Combine images into one tidy document.
or click to choose, PNG, JPEG, WebP, GIF, BMP
Audio Extractor
Pull the sound track out of any video, decoded locally, exported as WAV.
or click to choose, mp4, webm, mov, mkv, mp3, m4a, wav…
Image Converter
PNG, JPEG and WebP, one file or a whole batch.
or click to choose, add as many as you like
Same format as the source, so this re-encodes the file. It is not a format change, but it is useful for shrinking at a different quality.
QR Generator
Design, style, brand and export scannable QR codes, all on this device.
Design presets one click
Content
Modules the little squares
Finder eyes the three corners
Background
The picture sits behind the modules; the quiet zone keeps the code scannable. Best with a subtle image.
Logo centre of the code
Caption printed under the code
Export
Type something above to see the code.
Tip: gradient or unusual module shapes can defeat some phone cameras. Scan the code with your phone before printing it at scale.
HTML Viewer
Open a single HTML file, or a whole folder with its CSS, JS, images and other assets. Everything runs sandboxed on this device.
Poster & Image Tiler
Cut a big image into printable pages you can tape into a poster, or scale it to an exact physical size. Always rendered at maximum quality.
or click to choose one
Interactive Diagrams
Turn any topic into a study diagram you can explore, quiz yourself on, and export.
File Converter
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
Transcript Analysis
Paste any transcript from any source. Drazil never contacts the source page; it works only on the text you give it.
OCR & Text Extraction
Read every word from an image or a PDF, on your device. The file never leaves your tab.
PNG · JPG · WebP · PDF, scanned pages welcome
Ollama guide
Connect this website to Ollama on your computer.
Connecting Drazil to Local Ollama
Drazil can connect directly to Ollama running on your own computer, allowing you to use your locally installed AI models inside Drazil.
This is useful because your model runs locally rather than requiring a cloud AI API.
Drazil looks for a local Ollama by itself. If one is running on this computer, the app connects to it on its own the first time you open it and the model shows up in the top bar. The steps below are for when that automatic connection does not happen, or when you want to point Drazil at a different machine.
There is one important catch, though:
Drazil is a website, while Ollama is a local server.
Your browser therefore has to make a request from Drazil's website to your computer.
The two addresses are:
Drazil https://drazil.app
and
Ollama http://127.0.0.1:11434
Because these are different origins, your browser applies a security mechanism called CORS (Cross-Origin Resource Sharing).
If Ollama doesn't explicitly allow Drazil's origin, the browser request can be rejected with:
403 Forbidden
Drazil then interprets this as Ollama being unreachable.
The solution is to tell Ollama:
Allow requests coming from https://drazil.app.
That's what OLLAMA_ORIGINS does.
Using an AI Agent, Recommended for Beginners
If you're unfamiliar with environment variables, PowerShell, or restarting background services, you can use an AI coding/terminal agent to help configure this.
Examples include:
- OpenCode
- Codex
- Antigravity
- Other reputable local coding/terminal agents
The agent doesn't need to modify Drazil itself. Its job is simply to:
- Check whether Ollama is installed and running.
- Check the current
OLLAMA_ORIGINSconfiguration. - Set the correct origin if necessary.
- Restart Ollama.
- Test whether the browser origin is accepted.
- Tell you exactly what worked or what is still wrong.
How much AI usage will this consume?
Very little. This isn't a large coding project. A capable agent should normally only need a small number of terminal commands and a short conversation. For example, the agent may need to:
Check Ollama Check OLLAMA_ORIGINS Set variable Restart Ollama Run CORS test Done
So you shouldn't need to spend hundreds of thousands of tokens on this. A few thousand tokens or less is generally plenty for the actual troubleshooting. If an agent somehow turns this into a 47-file software architecture project, it has gotten way too excited.
Recommended approach
Give the agent the prompt below before letting it make changes. That way, it knows exactly what you're trying to accomplish and is less likely to start changing unrelated settings.
Prompt for an AI Agent
Copy this into OpenCode, Codex, Antigravity, or a similar agent:
One important thing
Don't give an agent unnecessary permissions just because it says it needs them. For this task, it should not need to:
- Access your browser passwords
- Access your personal files
- Change firewall rules
- Modify your router
- Expose your PC to the internet
- Delete Ollama data
The task is basically an environment-variable + restart + test job.
Requirements
Before beginning, make sure you have:
- Ollama installed
- Ollama running on your computer
- At least one model downloaded
- Chrome, Edge, Firefox, or another modern browser
- Internet access to Drazil
For example:
Check your installed models:
Step 1, Confirm Ollama Is Running
Open this in your browser:
You should see:
If you don't, launch Ollama and wait for it to start.
Terminal test
You can also run:
If Ollama is working, you'll receive JSON containing your installed models.
Step 2, Allow Drazil's Origin
This is the actual CORS fix. Set:
Windows, easiest method
- Press Windows.
- Search for Edit the system environment variables.
- Open it.
- Click Environment Variables...
- Under User variables, click New...
- Enter:
Variable name
Variable value
Click OK through all the dialogs.
Or use PowerShell
Run:
Step 3, Restart Ollama, VERY IMPORTANT
Changing the environment variable doesn't automatically update an Ollama process that is already running. Ollama needs to start again so it can read the new value.
Windows
- Right-click the Ollama icon in the system tray.
- Choose Quit.
- Launch Ollama again from the Start menu.
macOS
Quit Ollama completely and relaunch it.
Linux
If you're running Ollama as a system service:
The restart is essential. Without it, you can correctly set OLLAMA_ORIGINS and still get a 403 because the old Ollama process is still running with its previous configuration.
Step 4, Test the CORS Configuration
This is the best way to determine whether the problem is actually fixed. On Windows:
You want:
200, Success
Great! Ollama accepted a request carrying Drazil's origin. You can move on to Drazil.
403, Still rejected
Ollama is still rejecting the origin. Continue to Troubleshooting.
Step 5, Connect Ollama in Drazil
Open:
Go to Settings and select:
Provider: Ollama
Base URL:
Then select a model that you've already downloaded with Ollama. For example:
Send a test message. If everything is configured correctly, Drazil should now be able to communicate with your local model.
Troubleshooting
Still getting 403?
Check the environment variable:
It should contain the Drazil origins:
Other entries are fine as long as these are all there. The local server entries, for example, are for running Drazil on your own machine:
Make sure there aren't:
- Extra spaces
- Quotes
- Markdown formatting
- Typos
- A different domain
Then fully restart Ollama again.
Diagnostic test: temporarily allow all origins
If you're certain everything looks correct but you're still getting 403, you can temporarily test whether the problem is definitely the origin restriction.
Set:
Restart Ollama. Then run the CORS test again:
If you now get 200, then you've confirmed that the problem is the origin configuration.
Afterwards, change it back
Don't leave it at * unnecessarily. Set it back to:
Then restart Ollama one more time.
Which browser you use matters
Firefox reaches a local Ollama from this site directly. Chrome and Edge enforce Private Network Access, which blocks a public HTTPS site from reaching 127.0.0.1 before any cross-origin check happens, and Ollama does not send the header that would allow it. In Chrome the request fails even when Ollama is running and the origin is allowed, and no Ollama setting will change that. The same setup works in Firefox.
Switching browsers is the whole fix. If you need Chrome specifically, the app has to be opened over http://localhost instead of the hosted URL, or a small local proxy has to sit in front of Ollama and answer with Access-Control-Allow-Private-Network: true.
Drazil Still Says "Ollama Unreachable"
Work through these checks:
Check 1, Ollama
Open: http://127.0.0.1:11434, Does it say Ollama is running?
Check 2, Models
Run: ollama list, Make sure at least one model is installed.
Check 3, API
Run: curl.exe http://127.0.0.1:11434/api/tags, You should receive JSON.
Check 4, CORS
Run the CORS test above. You want 200.
Check 5, Try localhost
If Drazil still can't connect using http://127.0.0.1:11434, try http://localhost:11434 as the Base URL.
Security Notes
This setup is designed to keep Ollama local.
The intended architecture is:
Internet
|
v
+-----------------+
| Drazil |
| drazil.app |
+--------+--------+
|
Browser request
|
v
+-----------------+
| 127.0.0.1 |
| :11434 |
+--------+--------+
|
v
+----------+
| Ollama |
+----+-----+
|
v
Your local model
You do not need to expose Ollama to the internet.
Avoid doing things like:
- Setting
OLLAMA_HOST=0.0.0.0 - Port-forwarding
11434 - Disabling your firewall just to make Drazil work
What OLLAMA_ORIGINS Actually Does
It's worth understanding what you're changing. The browser essentially tells Ollama:
"I'm making this request from: https://drazil.app"
Ollama checks whether that origin is allowed.
Without the configuration:
Drazil -> Ollama
X Origin not allowed
-> 403
With OLLAMA_ORIGINS=https://drazil.app:
Drazil -> Ollama
OK: Origin allowed
-> 200
Your model itself doesn't change. Your downloaded model files don't change. You're simply telling Ollama which web origin is allowed to communicate with it.
TL;DR
If you're comfortable with the terminal:
1. Set the origin
2. Restart Ollama
Quit Ollama completely -> launch it again.
3. Test
You want: 200
4. Drazil
Provider: Ollama Base URL: http://127.0.0.1:11434
Choose your installed model. Done.
Final Recommendation
If you aren't comfortable with the terminal, I recommend using an agent like OpenCode, Codex, or Antigravity for this setup.
This is exactly the kind of small system-configuration task where an agent is useful: it can inspect your current configuration, run the appropriate commands, restart Ollama, and verify the result rather than making you hunt through Windows settings yourself.
And importantly, this should be a very small agent task. You don't need to burn through a giant context window or use an expensive model. A lightweight but competent coding model should generally be more than enough.
Just give the agent the prompt above and tell it:
Diagnose this first. Don't make unrelated changes.
That one sentence can save you from the classic AI-agent experience of asking it to fix one environment variable and watching it decide that your entire computer needs a spiritual reboot.
Image Compressor
Every image is encoded as AVIF, WebP, JPEG and PNG, each one decoded back and scored against your original until it hits the quality target you picked. The smallest file that clears the target wins , so the answer is measured, not guessed from an encoder's quality slider. Nothing leaves your device
or click to choose · JPEG, PNG, WebP, AVIF, GIF, BMP, TIFF, HEIC-as-JPEG
Nothing is uploaded , the encoders run in this tab.
How is quality measured?
SSIM over 8×8 windows, computed on luma and both chroma planes, with the
worst 1% of windows weighted in so a single mangled patch of text cannot
hide inside a good average. RGB under fully transparent pixels is ignored,
because encoders legitimately rewrite it and nobody can see it.
Each candidate is encoded, decoded again and scored against your original.
The quality number a format reports for itself is never trusted , that is the
whole reason a stock canvas.toBlob at 75% loses to this by 30, 90%
on most photographs.
Resizing is off by default; the resampler is Lanczos-3, not bilinear.
PDF Compressor
Most of a PDF is embedded images, so that is where this spends its effort: they get decoded, re-encoded with MozJPEG or AVIF at a resolution matched to how large they actually appear on the page, and scored against the original. The text layer is left alone, so the result stays selectable and searchable. Runs entirely in this tab
or click to choose , including password-protected files you already have the password for
Why not just rasterise everything?
Flattening each page to a JPEG is the oldest trick in this category and it does produce a small file , by throwing away the text layer, the vector graphics and every hyperlink. The result is not searchable, cannot be copied from, and looks soft the moment anyone zooms in. That is why it is the last option here and off by default.
Why does maximum take so long?
It encodes every rasterised stream with Zopfli, the highest-density compressor that is still a legal PDF filter, instead of zlib than zlib does, and the payoff is typically 3, 8%. On a 20 MB document that is minutes of work for a megabyte. It is on by default because the payoff is real, but "Balanced" effort caps its iterations , switch to Maximum only if you are prepared to wait.
Returns the original untouched when nothing beats it; vector-heavy PDFs rarely shrink.
Video Compressor
A genuine re-encode, not a rename. Several encodes of your clip are run and the smallest one that still meets the quality target is what you get. Nothing is uploaded
or click to choose · mp4, mkv, webm, mov, avi, m4v
Why does this run more than one encode?
Because at a fixed CRF the encoder's search effort changes the result by
10, 20% at identical perceived quality. The old version of this tool listed a
veryfast encode before a medium one and returned whichever
finished first , so the better preset was unreachable, and every video paid the
tax it was meant to avoid. Here they are all run and the smallest wins.
Minutes per 1080p minute — lower resolution first, CRF buys little.
Audio Compressor
Opus, AAC, MP3 and FLAC, encoded as variable bitrate where that is available and normalised to the EBU R128 target so the result is not merely smaller but correctly loud. Nothing is uploaded
or click to choose · mp3, m4a, wav, flac, ogg, aac, opus, mkv, mp4, webm
Why is Opus the default?
Opus is a perceptual codec designed a decade after AAC and MP3 and it wins at every bitrate , at 96 kbps it is roughly where MP3 was at 192 kbps. The gap narrows above about 160 kbps and inverts: a 320 kbps MP3 can beat a 256 kbps Opus. Below 128 kbps there is no contest, which is why Opus is the default and why the bitrate menu changes with the format.
What does loudness normalisation actually do?
Two encodes of the same music at the same bitrate can differ in perceived loudness by several decibels, because encoders are inconsistent about it and mastering varies. EBU R128 measures integrated loudness and applies a single gain so the result lands on a known target. That is why streaming services normalise: without it, half your catalogue is quiet and half clips. It is a gain change, so it is lossless with respect to the audio , only the volume moves.
Already lossy at the target bitrate? FLAC or audio-stream copy avoids a second generation of artefacts; the tool will say when.
PDF Editor
Edit text, annotate, insert images and shapes, everything on-device.
or choose a file, then click the page to add text, shapes, highlights, images or notes.