JinaClip is a free, open source system cleanup & optimization project written in JavaScript and released under MIT. It has 1,749 GitHub stars, 0 forks and 0 open issues, and was last pushed 4 months ago. On this registry it ranks #12 of 22 tracked projects in System Cleanup & Optimization, with 5 head-to-head comparisons available.

What is JinaClip?

JinaClip is a local-first browser extension that converts any webpage into LLM-friendly Markdown, JSON, or HTML inside the browser runtime, aimed at people who need webpage content for AI workflows without a cloud service.

What it is

The README presents the project as Jina Reader — Local Edition (v7). It is a JavaScript project under the MIT license, packaged as a Manifest V3 browser extension, and organized as a modular service-oriented architecture with background orchestration, LocalReaderService v7, an intelligence engine, logging utilities, and configuration modules. The repository names manifest.json, scripts/build.js, src/background/index.js, src/services/localReader.js, src/utils/logger.js, src/config/constants.js, and src/config/defaultSettings.js.

JinaClip solves the problem of extracting clean, LLM-friendly content from modern webpages that use Shadow DOM, dynamic iframes, and SPA layouts without sending the page to a remote processor. It lives in the browser-extension ecosystem, specifically the Chrome extension environment indicated by Manifest V3 and the chrome-extension and mv3 topics, and it replaces the cloud path through r.jina.ai by implementing extraction and transformation in the browser runtime.

Key capabilities

  • Converts captured page content into Markdown, JSON, or HTML and writes the result to the system clipboard through the Clipboard API, with Notification API feedback.
  • Uses a Heuristic Scoring Engine that calculates a text-to-link density ratio and penalizes interactive noise such as dashboards, buttons, and navigation.
  • Flattens Shadow DOM and dynamic iframes during extraction; the feature matrix marks Shadow DOM as supported in the Local Engine (v7).
  • Captures full pageshots by analyzing scrollHeight and viewHeight, scrolling with paint-settle delays, assembling segments in an OffscreenCanvas, and returning a Markdown-wrapped Base64 string.
  • Exposes copy actions through click, hotkeys, and browser menu entry points, routed by a background orchestrator and config service to LocalReaderService v7.
  • Packages as a Manifest V3 extension through manifest.json and scripts/build.js, with a vanilla ES6+ codebase.
  • Marks table formatting as Pro Grade and full pageshots as Stitched Canvas in the feature matrix, alongside 100% local processing, infinite rate limits, and a $0 cost model.

Who uses it and how

  • AI workflow users who need webpage content in prompts can trigger a copy action and receive Markdown, JSON, or HTML on the clipboard without a cloud round trip.
  • Privacy-centric users can keep page content in the browser runtime, as described by the local-first and privacy-centric topics.
  • Users dealing with SPA layouts, Shadow DOM, and dynamic iframes can rely on the DOM scoring and flattening pipeline.
  • Chrome extension users in a Manifest V3 environment are the deployment audience indicated by manifest.json, the chrome-extension topic, and the mv3 topic.
  • Contributors work in vanilla ES6+ and use the scripts/build.js packaging pipeline; the README's installation and development section is contributor onboarding.

Getting started

The README provides a contributor-oriented installation and development path: the codebase is vanilla ES6+, packaged through scripts/build.js, and defined as a Manifest V3 extension by manifest.json. No Docker image, package-manager command, compose file, or hosted option is given in the supplied facts.

How it compares

Within the supplied facts, JinaClip is the local-first counterpart to Jina Reader's Cloud Reader, removing the need for r.jina.ai cloud calls by running extraction and transformation in the browser runtime. The feature matrix contrasts the Local Engine (v7) with Cloud Reader on privacy, rate limits, cost, Shadow DOM support, table formatting, and full pageshots.

When to use it — and when not to

JinaClip is a fit for users who want webpage-to-Markdown conversion for LLM workflows without operating a server and who are comfortable with a Manifest V3 extension built through the repository's contributor path. It is not a fit for anyone who needs a documented hosted service, a Docker deployment, or a package-manager install, because the supplied facts provide none of those. The README excerpt is truncated and does not document a store listing or release artifact, and the registry category lists System Cleanup & Optimization even though the documented function is webpage conversion.

project readme (upstream, from github) — read inline

Jina Reader — Local Edition (v7)

Professional-Grade • Local-First • Privacy-Centric

Transform any webpage into high-fidelity, LLM-friendly Markdown entirely within the browser.

License: MIT Engine: Local-First Privacy: Zero-Cloud Author: Ahmad Hassan


Designed for AI Workflows. Engineered for Privacy.

The Philosophy

In an era of cloud-dependency and rate-limited APIs, Jina Reader (Local) represents a pivot back to local-first computing. This project eliminates the middleman, removing the need for r.jina.ai cloud calls by implementing the entire extraction and transformation pipeline directly in the browser's runtime. Content remains local, speed is absolute, and usage is infinite.


Architectural Excellence

The system is built on a modular, Service-Oriented Architecture (SOA) designed to handle the complexities of the modern web (Shadow DOM, dynamic iframes, and SPA layouts).

1. High-Level System Flow

The following diagram illustrates the lifecycle of a single "Copy" request, from the user's action to the final clipboard entry.

graph TD
    User([User Action: Click/Hotkeys/Menu]) --> Orchestrator[Background Orchestrator]
    Orchestrator --> Config[Config Service]
    Config --> Service[LocalReaderService v7]
    
    subgraph "Target Tab Context"
        Service -- Script Injection --> Engine[v7 Intelligence Engine]
        Engine -- DOM Scoring --> Root[Content Root Discovery]
        Root -- Cleaning --> Clone[Sanitized Clone]
        Clone -- Conversion --> MD[Markdown/JSON/HTML]
    end
    
    MD -- Message Passing --> Service
    Service -- Clipboard API --> OS[System Clipboard]
    Service -- Notification API --> User

2. The v7 Intelligence Engine

At the heart of the project is the Heuristic Scoring Engine. Instead of "guessing" where the content is, it calculates a text-to-link density ratio and penalizes interactive "noise" (dashboards, buttons, navs).

sequenceDiagram
    participant P as Web Page
    participant E as Intelligence Engine
    participant S as Scoring Module
    participant C as Converter
    
    E->>P: Traverse DOM Tree
    P-->>E: Candidate Elements (div, main, article)
    E->>S: Compute (Text Density - Link Density)
    S-->>E: Final Scores
    E->>P: Flatten Shadow DOM & Iframes
    E->>C: Execute Pro-Grade Markdown Conversion
    C-->>E: LLM-Friendly Payload

Feature Matrix

Feature Local Engine (v7) Cloud Reader
Privacy 100% Local Cloud Processed
Rate Limits Infinite Strictly Limited
Cost $0 Token Based
Shadow DOM ✅ Supported ❌ Limited
Table Formatting ✅ Pro Grade ✅ Basic
Full Pageshots ✅ Stitched Canvas ❌ N/A

Repository Structure

p:/extensions/JinaClip - Copy Page for LLM/
├── scripts/
│   └── build.js          # Professional packaging pipeline
├── src/
│   ├── background/
│   │   └── index.js      # Lifecycle & Event Orchestration
│   ├── services/
│   │   └── localReader.js # Core Extraction & Transformation Engine (v7)
│   ├── utils/
│   │   └── logger.js      # System-wide observability
│   └── config/
│       ├── constants.js   # Immutable definitions
│       └── defaultSettings.js
├── icons/                # High-fidelity visual assets
└── manifest.json         # Extension Manifest (MV3)

Technical Pipeline: Full Page Capture

The "Pageshot" feature utilizes a multi-stage stitching pipeline to capture full-length articles without loss of detail.

  1. Dimension Analysis: Calculates scrollHeight and viewHeight.
  2. Synchronized Scrolling: Executes discrete jumps with paint-settle delays.
  3. Canvas Orchestration: Assembles visible segments in a OffscreenCanvas.
  4. Data Delivery: Converts the final buffer to a high-quality Markdown-wrapped Base64 string.

Installation & Development

Onboarding for Contributors

The codebase is written in vanilla ES6+ to ensure zero-coupling and maximum longevity.

  1. Clone & Setup:
    git clone 
    npm install
    
  2. Build for Production:
    npm run build
    
  3. Browser Loading:
    • Open chrome://extensions/
    • Load the dist/ folder as an "Unpacked Extension."

Professional Usage

  • Quick Action: Left-click the extension icon for a standard Markdown copy.
  • Precision Extraction: Right-click the icon to select specific formats (JSON, HTML, Text).
  • Automation: Use the Global Shortcut Alt+Shift+J for immediate capture.

Credits & License

This project was architected and developed by Ahmad Hassan (B-Ted) as a part of the movement toward high-performance, local-first AI tools.

Distributed under the MIT License. Contributions that align with the core philosophy of "Clean Code & User Privacy" are welcomed.


"The best way to read the web is locally."

Frequently asked questions

Is JinaClip free to use?

JinaClip is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does JinaClip do?

Professional-grade, local-first browser extension that transforms any webpage into high-fidelity, LLM-friendly Markdown entirely within the browser's runtime. Z

What is JinaClip written in?

JinaClip is primarily written in JavaScript. Its source is publicly available at https://github.com/AhmadHassan-BTed/JinaClip, and it has 1,749 GitHub stars.