Page Keyword Highlighter is a lightweight, secure, and free browser extension. Whether you are reading long articles, analyzing reports, or searching internal knowledge bases, simply enter a set of keywords and it will instantly highlight all matching text with a prominent yellow background, making key information clear at a glance.
🔍 Multi-keyword highlighting: Highlight multiple keywords at once, marking all targets simultaneously.
⚡ Symbol removal: Intelligently ignore punctuation marks. Enter "AB" to match "A,B", "A B", etc., without treating Chinese characters as symbols.
🎯 Wildcard | matching: Use | to match any characters within the same line, e.g., "mobile|dev" matches "mobile app dev".
🛡️ Whitelist filtering: Set words you do not want highlighted, precisely eliminating interference.
🌐 Cross-element highlighting: Even if text is interrupted by bold, line breaks, italics, etc., the entire phrase can be highlighted completely.
📤📥 Import/Export config: Export keywords, whitelist, and all settings as a JSON file for backup or migration.
🔒 Privacy first: All data is stored locally. No network requests, no privacy collection.
✨ 核心功能
🔍 智能高亮
多关键词一次高亮,黄色背景+黑字,清晰醒目。
⚡ 去符号替换
跨标点匹配,不误伤中文,纯文本检索利器。
🎯 通配符 |
段落内模糊匹配,灵活应对不同写法。
🛡️ 白名单过滤
排除不需要高亮的词汇,精准控制范围。
🌐 跨节点匹配
无视加粗、换行等标签,智能合并高亮。
📤📥 导入/导出
一键备份或迁移所有设置,便于多设备同步。
🔒 100%本地运行
无网络请求,无数据收集,隐私安全有保障。
🔍 Smart Highlight
Highlight multiple keywords at once with yellow background + black text for clarity.
⚡ Symbol Removal
Cross-punctuation matching without affecting Chinese, perfect for plain text search.
🎯 Wildcard |
Fuzzy matching within paragraphs, flexible for various writing styles.
🛡️ Whitelist Filter
Exclude unwanted words for precise control.
🌐 Cross-element Matching
Ignores tags like bold and line breaks, intelligently merges highlights.
📤📥 Import/Export
Backup or migrate all settings with one click.
🔒 100% Local
No network requests, no data collection, privacy guaranteed.
📸 功能截图
📘 使用指南
1. 安装扩展
前往 Microsoft Edge 加载项商店 搜索“页面关键词高亮助手”并安装(完全免费),或下载离线安装包手动加载。
Go to the Microsoft Edge Add-ons Store and search for "Page Keyword Highlighter" to install (completely free), or download the offline installation package and load it manually.
2. Open the settings panel
Click the extension icon in the toolbar to open the control panel. At the top is the "Enable Highlight" toggle, and below is the keyword input field.
3. Enter keywords
Enter the words you want to highlight in the text box. Separate multiple keywords with spaces (e.g., apple banana machine learning).
💡 If you need to match phrases containing spaces, use the wildcard | or enable "Symbol Replacement" and enter continuous characters.
4. Immediate effect
Ensure the "Enable Highlight" toggle is on, and the current page will automatically highlight all matching keywords. No manual refresh is needed; configurations are saved and synced instantly.
5. Advanced settings (optional)
Click the ⚙️ Advanced Settings at the bottom of the panel to expand more options:
Symbol Replacement: When enabled, entering AB will match A and B separated by punctuation or spaces (e.g., A,B). Only punctuation is recognized, without affecting Chinese characters.
Wildcard | Matching: Use | in keywords to match any characters within the same paragraph. For example, mobile|dev matches "mobile app dev". Use \| to match a literal vertical bar.
Whitelist: Enter words you do not want highlighted (also separated by spaces). These words will be skipped even if matched.
Import/Export Config: Click "Export" to save all current settings as a JSON file; click "Import" to quickly restore a previously backed up configuration.
All advanced settings are enabled by default; you can disable or adjust them at any time.
6. Turn off or modify
Turning off the master switch will immediately remove all highlights; turning it back on will restore them. Modifying keywords or the whitelist will update the page in real time.
From v1.0.16 to v1.0.30, this little keyword highlighter was almost half rewritten. Looking back, the whole process was filled with the frustration of "putting out fires" and the satisfaction of finally cracking the tough nuts.
Initially, I just wanted the extension to support phrase highlighting, like highlighting "machine learning" with spaces. I thought adding quote parsing and tweaking regex would be enough, but reality quickly set in: users reported that words with spaces in internal systems weren't highlighted at all, while Baidu's homepage worked fine. I found that high-security sites have strict CSP policies that kill inline styles; some pages hide text in Shadow DOM, unreachable by traditional TreeWalker. Even worse, in some enterprise systems, things like <b>A</b>BCD were everywhere, and the old engine could only highlight A or BCD, the whole ABCD just wouldn't light up.
So, I had to completely rewrite the core text traversal: recursively collect all text nodes, assemble them into a global text, record offset mappings, then after regex matching, trace back to split each node's highlight range. I iterated four or five versions on this alone, each getting closer to "correct cross-node matching" but always stumbling on edge cases.
The bigger pit was "symbol removal". Early on, to match phrases separated by arbitrary symbols, I simply used [\W_]* to match any non-word characters between words. It worked perfectly on English pages, but on a pure Chinese internal system, the entire dashboard turned yellow—because Chinese characters aren't \w in regex, they were all treated as symbols. A user reported that the words "内幕" and "作业" dyed the screen yellow, and I felt my scalp tingle. Later, I meticulously compiled a Unicode range list of Chinese and English punctuation and whitespace, replacing the broad \W, finally allowing the extension to ignore real punctuation without harming Chinese characters. This change also deepened my respect for Unicode character classes.
Whitelist, wildcard toggle, collapsing advanced settings, import/export... these features were all born from "conversations" with users. Some wanted exceptions for certain words, some thought there were too many switches and wanted them hidden, others worried about accidental input. Every feedback was a spur to "do better".
Finally, when I tucked all advanced switches into "⚙️ Advanced Settings", restored a clean interface, and confirmed that internal systems, English blogs, Shadow DOM pages, and CSP-strict sites all highlighted steadily, that feeling of "finally got it" was more solid than anything.
This plugin's code isn't huge, but almost every line has been through struggle and refinement. I'm deeply grateful to the users who actively reported bugs and use cases; you made this free little tool grow into something genuinely durable. v1.0.30 is a milestone, but definitely not the end. If there's anything still driving you crazy, please tell me, and we'll keep polishing.