Key takeaways
- Most subtitle OCR tools extract everything on screen — the watermark, channel logo, and on-screen graphics end up mixed into your SRT file alongside the real subtitles.
- The fix is to filter what OCR keeps using four signals: color, text height, screen region, and language. Real subtitles are usually one consistent color, a consistent size, pinned to the same band of the frame, and in one language; watermarks and logos differ on at least one of these.
- GeekLink lets you set these filters before extraction — pick the subtitle color from sample frames, set a minimum and maximum text height, choose the subtitle region (bottom, bottom 20%, top, or full frame), and set the subtitle language so text in other writing systems is dropped automatically.
- It runs 100% offline on Apple Silicon Macs and exports a clean SRT — no cloud upload, no watermark lines to delete by hand.
- GeekLink has a free tier; Pro is $12.99/mo or $99/yr and supports OCR across 90+ languages.
Why does subtitle OCR pick up the watermark and logo?
OCR reads every piece of text in the frame, not just the subtitles. A "hardcoded" (burned-in) subtitle is just pixels — there is no separate subtitle track to copy. So an OCR tool scans each frame, finds anything that looks like text, and reads it. If the frame also contains a channel watermark, a logo, a username, a "Subscribe" overlay, or a song title, OCR reads those too.
The result is an SRT file where real dialogue lines are interleaved with junk: the watermark repeats on almost every line, the logo text shows up as garbled characters, and on-screen captions get mixed in. Cleaning that by hand defeats the point of using OCR in the first place.
The key insight is that subtitles look different from everything else in three measurable ways. Dialogue subtitles are usually a single consistent color (often white or yellow with an outline), a consistent height, and they sit in the same horizontal band of the frame. A watermark is typically semi-transparent, smaller, and parked in a corner; a logo is a fixed graphic; on-screen captions are often larger or a different color. If you tell the OCR engine what the subtitle looks like, it can keep the subtitles and drop the rest.
How do you extract only the subtitles and skip everything else?
New to pulling burned-in subtitles off a video? Start with the general walkthrough on how to extract hardcoded subtitles with OCR. This guide focuses on one thing the basics skip: keeping only the dialogue and dropping the watermark, logo, and on-screen text.
You constrain OCR with four filters — color, font size, region, and language — so it only reads text that matches your real subtitles. Each filter removes a different kind of noise, and you can stack all four.
- Color filter — keep only text in the subtitle's color, so a differently-colored watermark, logo, or comment is ignored.
- Font-size filter — keep only text within a height range, so tiny watermarks/credits and oversized titles are skipped.
- Region filter — only read the band where subtitles appear, so anything in the corners or the top of the frame is never scanned.
- Language filter — keep only text in your subtitle's writing system, so a logo or watermark in another language is dropped automatically.
In GeekLink, you set these before extraction starts, and they apply to the whole batch. The sections below explain each one.
How do I filter subtitles by color?
GeekLink samples frames from your video and lets you click the exact color of your subtitles; it then keeps only text in that color and ignores everything else. When you start an OCR job, GeekLink pulls a set of still frames that contain text and shows them to you. You click on a subtitle character, GeekLink reads its color, and uses that as the filter.
This is the single most effective filter for watermarks and on-screen comments, because those are almost always a different color (or a faded, semi-transparent version) compared to clean white or yellow dialogue subtitles. If your subtitles are white and the watermark is gray, a color filter alone removes the watermark.
Color filtering also handles the common case of dual-color or two-speaker subtitles — you can capture one color and leave the other out, or capture both, depending on what you need. Because you pick the color from real frames of your own video, it matches the actual rendered subtitle rather than a guessed value.
How do I filter out text by font size?
You set a minimum and maximum text height, and GeekLink only reads text whose height falls inside that range. Subtitles in a given video are a consistent size, so a height range that fits the dialogue will naturally exclude text that is much smaller or much larger.
This catches the noise that a color filter misses. A small semi-transparent watermark, a tiny copyright credit, or a username in the corner is usually shorter than the subtitle text, so a minimum height removes it. A large title card, an intro headline, or a big on-screen banner is usually taller than the subtitle text, so a maximum height removes it.
Setting a font-size range is the most reliable way to drop watermarks and credits that happen to share the subtitle's color. Combined with the color filter, it removes both the differently-colored noise and the same-colored-but-wrong-size noise.
How do I limit OCR to the subtitle region?
You tell GeekLink which band of the frame to scan — bottom half, bottom 20%, top half, or the full frame — and it ignores text outside that band entirely. Most dialogue subtitles sit in the lower portion of the frame, so restricting OCR to the bottom region skips anything in the corners or along the top, like logos and channel watermarks.
The region filter is also a speed win: scanning a narrow band instead of the whole frame means less to process per frame. For vertical short-form video (TikTok, Reels, Shorts), subtitles often sit higher, near the upper-middle, so GeekLink lets you switch the region to the top — picking the wrong region is the most common reason OCR "finds nothing," so match it to where your subtitles actually are.
Region, color, and size work together: region removes everything outside the subtitle band, then color and size clean up anything left inside it — such as a watermark that happens to overlap the subtitle area.
How do I ignore subtitles or text in another language?
Tell GeekLink your subtitle language, and it automatically drops text written in a different script. When you set the source language — say Chinese — GeekLink expects Chinese characters (plus Latin letters and numbers, which appear in almost any subtitle) and discards lines in other writing systems, such as a Thai station logo, a Korean watermark, or Japanese on-screen text.
This is the filter that color and size can't always catch. A re-uploaded or re-posted clip often carries a watermark or channel logo in a completely different language from the dialogue. Because that text is a different script, GeekLink treats it as "not your subtitle language" and leaves it out — even when it happens to share the subtitle's color and size.
It is especially useful for Chinese short-form and re-posted video, where Thai, Korean, or Japanese platform logos are common. One caveat: GeekLink keeps Latin letters and numbers regardless of the chosen language, because subtitles routinely mix in English words and digits — so this filter removes other non-Latin scripts, not English.
For the full walkthrough — a per-language script table, bilingual subtitles, and why English is never removed — see how to ignore foreign-language logos and watermarks.
Step by step: extract clean subtitles from a video on Mac
Here is the full workflow in GeekLink, from import to a clean SRT:
- Import your video(s). Drag one or many files in — GeekLink batch-processes a whole folder at once.
- Choose the subtitle region. Pick bottom (default), bottom 20%, top, or full frame to match where your subtitles sit. For vertical video, choose top.
- Start OCR and pick the subtitle color. GeekLink shows sample frames; click a subtitle character to set the color filter.
- Set the text-height range. Enter a minimum and maximum height so watermarks, credits, and oversized titles are excluded.
- Let it run, then export SRT. GeekLink reads only the text that matches all three filters and exports a clean, editable SRT — no watermark lines to delete.
Because the filters apply to the entire batch, you set them once and clean dozens of videos in one pass. Everything runs locally on your Mac, so nothing is uploaded.
For a reference on every OCR setting in the app — color sampling, font-height range, region, and detection interval — see the OCR guide in the docs.
How does this compare to other OCR subtitle tools?
Most OCR subtitle extractors read the whole frame and give you no way to exclude non-subtitle text, so you end up deleting watermark and logo lines from the SRT by hand. Generic OCR apps (and screenshot-to-text tools) aren't built for video subtitles at all — they have no concept of a subtitle color, height, or band.
Dedicated subtitle OCR is rarer. The differentiator to look for is whether a tool lets you constrain extraction by color, size, and region before it runs, rather than making you scrub the output afterward. GeekLink is built around that workflow and runs offline on Mac; cloud tools require upload and a subscription, and most still capture everything on screen.
Disclosure: GeekLink is our product. The color, font-size, and region filters described here are the exact controls in the app. Feature sets of other tools change over time — verify on their sites.
FAQ
How do I remove a watermark from extracted subtitles?
Filter the OCR before it runs instead of cleaning the SRT afterward. In GeekLink, pick the subtitle color from sample frames so a differently-colored watermark is ignored, set a text-height range so a smaller watermark is skipped, and restrict OCR to the subtitle region so corner watermarks are never scanned. Stacking all three removes most watermarks automatically.
Why does my subtitle OCR include the channel logo and on-screen text?
Because OCR reads every piece of text in the frame, and hardcoded subtitles are just pixels with no separate track. Unless the tool lets you filter by color, size, or region, it captures the logo, username, and any on-screen captions along with the dialogue.
Can I extract only one color of subtitle from a video?
Yes. GeekLink reads the subtitle color from frames of your own video and keeps only text in that color. For dual-color or two-speaker subtitles, you can capture a single color and leave the other out, which is useful when one color is dialogue and the other is on-screen commentary.
How do I stop OCR from grabbing the title card or big on-screen text?
Set a maximum text height. Title cards and large banners are usually taller than dialogue subtitles, so a maximum height excludes them while keeping the subtitle line. Combine it with a minimum height to also drop small credits and watermarks.
How do I ignore a watermark or logo that's in a different language?
Set the subtitle language in GeekLink. It keeps text in that language's writing system (plus Latin letters and numbers) and drops text in other scripts — so a Thai, Korean, or Japanese logo or watermark on a Chinese video is removed automatically. This is separate from the color and size filters and catches foreign-language noise they might miss.
Does subtitle extraction work offline on Mac?
Yes. GeekLink runs OCR locally on Apple Silicon Macs after downloading the model once — no cloud upload. It batch-processes multiple videos and exports clean SRT files, all offline.