Skip to content

Repository files navigation

Qrive app icon

Qrive

QR Links for Google Drive

Turn a Drive item that is already shared into a scannable QR code — in one click.

Add Qrive to Chrome

See it in action · Privacy & trust · Build it yourself

CI status Chrome Web Store version MIT License Manifest V3

Qrive turns shared Google Drive links into locally generated QR codes

A faster path from Drive to QR

Qrive adds a small QR action beside Google Drive's existing shared indicator. Click it to get the item's QR code, copy its link, or save a PNG — without opening a sharing dialog or changing who can access the item.

One click from Drive Local by design Permissions stay in control
The QR action appears beside items Drive already marks as shared. QR generation happens entirely in your browser. No OAuth, backend, analytics, or remote QR service. Qrive never makes an item public and never edits its existing Google Drive sharing settings.

See it in action

Qrive QR popover open beside a shared Google Drive folder

Qrive QR actions appear only beside shared Google Drive items Qrive refuses to generate a QR code when no trusted Drive link is available

How it works

  1. Share a file or folder using Google Drive's normal controls.
  2. Select the Qrive button beside Drive's existing shared icon.
  3. Scan the QR, copy the link, or save it as a PNG.

If Qrive cannot find a trusted Drive URL or stable item ID, it shows a clear error instead of producing a potentially incorrect QR code.

Built for everyday Drive use

  • Works with shared files, folders, Google Docs, Sheets, Slides, and Forms.
  • Handles Google Drive's single-page navigation and virtualized, reused rows.
  • Keeps its UI isolated from Drive with Shadow DOM.
  • Supports Korean and English labels, keyboard navigation, focus containment, Escape, and outside-click dismissal.
  • Includes clear copied-link feedback and reduced-motion support.
  • Requests no additional Chrome API permissions beyond access to https://drive.google.com/*.

Install

Install Qrive from the Chrome Web Store, then open or reload Google Drive. Qrive appears only beside items that Google Drive already marks as shared.

Qrive is an independent open-source project. It is not affiliated with, endorsed by, or sponsored by Google.

Privacy and trust

The extension runs only on https://drive.google.com/* through its declared content script. It requests no additional Chrome API permissions. Chrome may still show a site-access warning because the content-script match allows Qrive to read and update the Google Drive page DOM. Qrive's manifest does not request access to other sites.

For a row that Google Drive marks as shared, Qrive prefers an existing HTTPS URL for a Drive file/folder or Google Docs, Sheets, Slides, or Forms item. If no URL exists, it may build https://drive.google.com/open?id=... only from an explicit row-level data-drive-id, data-item-id, or data-id value that matches a strict stable-ID format. Qrive does not infer an ID from arbitrary text. If neither source is trustworthy, the popover explains the problem and does not create, copy, or save a QR code.

Opening the QR destination is still governed by the item's current Google Drive sharing policy. A recipient without access will continue to see Google's access-request or sign-in flow. Qrive never reads or changes the sharing policy.

Development setup

Prerequisites:

  • Node.js 20 or newer
  • Corepack

The repository pins pnpm in package.json and commits pnpm-lock.yaml.

corepack enable
corepack install
pnpm install --frozen-lockfile
pnpm check

Useful commands:

pnpm dev          # rebuild TypeScript while files change
pnpm typecheck
pnpm lint
pnpm test
pnpm build        # create the unpacked extension in dist/
pnpm package      # create artifacts/qrive-v<version>.zip
pnpm store-assets # regenerate Chrome Web Store screenshots and promo images

The dev command watches TypeScript. Reload the extension from chrome://extensions after each rebuild. Static manifest, locale, or icon changes require restarting pnpm dev or running pnpm build.

Load the unpacked extension

  1. Run pnpm build.
  2. Open chrome://extensions.
  3. Enable Developer mode.
  4. Select Load unpacked.
  5. Choose this repository's dist directory.
  6. Open or reload a Google Drive list and look for Qrive's QR icon beside an existing shared icon.

For a non-destructive smoke test, use a file or folder that is already shared. Open the Qrive popover, compare its copied URL with the row URL, scan the QR in a separate browser profile, and confirm that Google Drive enforces the pre-existing access policy. Do not change the sharing dialog during this test.

Architecture

  • src/drive-dom.ts contains shared-state detection, allowlisted link validation, item-name extraction, and row discovery.
  • src/row-controller.ts owns idempotent row-mounted buttons and virtualized-row refresh behavior.
  • src/popover.ts owns the local QR, copy/download actions, positioning, and focus behavior.
  • src/content-script.ts batches SPA mutations into animation-frame scans.
  • tests/ uses DOM fixtures to cover shared-row detection, trusted link extraction, duplicate prevention, and row reuse.
  • scripts/ builds, creates icons, and produces a reproducibly ordered release archive.

Each injected button and the popover use an open Shadow Root for style isolation and testability. Buttons are mounted directly after the shared indicator inside the corresponding Drive row, so they inherit the row's scrolling and overlay behavior. When Drive recreates a virtualized row, Qrive's DOM observer reattaches the same button instance in the new row content before the next paint and ignores its own insertion mutation. Qrive does not monkey-patch Google Drive code.

Known DOM dependency

Google Drive does not publish a stable extension API for its file-list DOM. Qrive therefore depends on accessibility roles, shared-label text, item links, and a small set of row data attributes currently exposed by the page. Google can change any of these without notice.

The selectors and accepted English/Korean shared labels are intentionally conservative. This reduces false QR codes but may cause Qrive to omit a button after a Drive UI update. When that happens, capture a sanitized DOM fixture with file names, IDs, and account information removed, add a regression test, then update src/drive-dom.ts.

Qrive currently observes English Shared/Shared with… and Korean 공유됨/공유된 항목/공유 사용자… indicators. Other Drive UI languages are not yet supported.

Privacy

All QR rendering happens inside the browser with a bundled library. Item names and URLs are used only in the current page to render the popover, copy the URL, or create the requested PNG. Qrive has no network client, storage, telemetry, advertising, OAuth flow, or backend. Google Drive itself continues to receive normal browser requests when a user opens Drive or follows a link.

See the full Privacy Policy for the data categories handled locally, retention, sharing, site access, and Chrome Web Store Limited Use statement.

Contributing and security

Contributions are welcome. Read CONTRIBUTING.md and the Code of Conduct before opening a pull request. Report vulnerabilities privately according to SECURITY.md; never post real Drive links, item IDs, file names, or account data in a public issue.

Release and Chrome Web Store deployment

Pushing a version tag such as v0.1.2 runs the release workflow. GitHub verifies the extension, creates the ZIP and checksum, and publishes both as a GitHub Release. When the repository's Google Cloud OIDC variables are configured, the same workflow uploads the package through Chrome Web Store API v2 and submits it for review.

Use pnpm release:version 0.1.2 to keep package.json and manifest.json in sync. See the automated release setup for the one-time service-account configuration and release commands. No long-lived publishing credential belongs in this repository.

Qrive is an independent open-source project and is not affiliated with, endorsed by, or sponsored by Google. Google Drive is a trademark of Google LLC.

License

MIT

About

Qrive — QR for Google Drive

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages