Search...Search plugins and themes...
⌘K
Sign in
  • Get started
  • Download
  • Pricing
  • Enterprise
  • Account
  • Obsidian
  • Overview
  • Sync
  • Publish
  • Canvas
  • Mobile
  • Web Clipper
  • CLI
  • Learn
  • Help
  • Developers
  • Changelog
  • About
  • Roadmap
  • Blog
  • Resources
  • System status
  • License overview
  • Terms of service
  • Privacy policy
  • Security
  • Community
  • Plugins
  • Themes
  • Discord
  • Forum / 中文论坛
  • Merch store
  • Brand guidelines
Follow us
DiscordTwitterBlueskyThreadsMastodonYouTubeGitHub
© 2026 Obsidian

Paperlane

Chulwoo ChoiChulwoo Choi37 downloads

Send your Markdown and HTML notes to Instapaper with embedded images and content checks.

Add to Obsidian
  • Overview
  • Scorecard
  • Updates9

Send Markdown and HTML files from your Obsidian vault to your personal Instapaper account as readable articles, with embedded local images and checks for missing content.

This is an independent community plugin project, not an official Obsidian or Instapaper product. Version 0.4.3 is a development build under the new paperlane ID. It targets desktop Obsidian 1.13.0 or later, with macOS as the initial validation platform. Local installation and settings have been checked in Obsidian. Live AI provider calls and mobile Instapaper rendering require separate validation.

Features

  • Send the current Markdown note or choose a .md, .html, or .htm file from the vault.
  • Preview the converted article and review conversion losses before sending.
  • Optionally send Markdown tags with the article using the Sync tags setting (off by default).
  • See clear sending, saved, and unconfirmed-result states.
  • Preserve paragraphs, code, footnotes, callouts, and readable wiki-link labels. HTML tables become labeled reading lists by default, including merged cells.
  • Preserve CSS-created line breaks locally in a sandboxed, network-blocked layout probe, and rasterize SVG diagrams at their viewBox size with up to 2× resolution.
  • Embed local PNG, JPEG, GIF, and WebP images; rasterize a restricted SVG subset to PNG.
  • Save to Instapaper home or an existing private folder using the official API.
  • Keep a local transfer journal and check uncertain results before allowing another upload.
  • Export a standalone reading HTML file without connecting an account.

No LLM, image-hosting server, or email automation is required. Source notes are not modified.

Installation

  1. Download main.js, manifest.json, and styles.css from the matching GitHub release.
  2. Create <vault>/.obsidian/plugins/paperlane/.
  3. Copy the three files into that directory, preserving existing data.json when upgrading.
  4. Restart Obsidian and enable Paperlane under Settings → Community plugins.

The published release contains only the three files Obsidian installs. Project and dependency license notices are embedded in main.js. A local ZIP with separate notices can still be built with npm run package. Do not place credentials inside the plugin directory. Use a test vault for development.

For an installation using the old ID, follow the migration instructions before enabling Paperlane.

Quick start

  1. Create a personal application through Instapaper's application registration page.
  2. Open your application under Your Apps and generate a personal access token.
  3. In the plugin settings, choose an Obsidian secret-storage entry or select the environment-variable method. The default variable name is INSTAPAPER_ACCESS_TOKEN.
  4. Check the connection and choose a destination.
  5. Select a file, review its preview and image warnings, then send it.

The current interface uses Korean labels. The usage guide identifies the commands by stable command ID and explains both authentication methods, including a macOS launcher that reads the token without echoing it.

Accounts, network access, and data

An Instapaper account and a personal access token are required to send articles. Local conversion and HTML export do not require an account. This plugin has no paid tier. A free account successfully saved and displayed the tested PNG article; this is not a guarantee of all future Instapaper service limits or account conditions.

The plugin connects to https://www.instapaper.com/api/2 to check the account, list private folders, save a selected article, retrieve its parsed body, and reconcile uncertain transfers. Opening a preview may check the connection when credentials are configured. It does not save an article until you press send.

A save sends the article title, converted HTML (including embedded image bytes), selected folder ID, and a description containing a random recovery marker. It does not send the local file path as a separate API field. Content can still contain information you authored, including filenames in image labels. Review the preview before sending.

Remote HTTPS image references remain in the uploaded article. Instapaper or the reading client may request those images from their hosts. The plugin replaces remote images with placeholders in its local preview. Exported HTML retains remote image URLs, so opening that file can contact those hosts.

There is no plugin telemetry, advertising, automatic updater, or runtime dependency download. Instapaper processes uploaded content under its privacy policy.

The file picker inspects only the immediate children of the folder you browse; it does not build an inventory of every vault path. The plugin reads selected vault files and referenced images through vault.read and vault.readBinary, and writes exports through vault.create. Runtime code uses no Node filesystem or adapter APIs. It accepts only normalized relative paths for entries currently indexed by the same vault. Linked folders follow Obsidian’s vault semantics: physical symlink targets are not inspected, so this does not guarantee that bytes are physically inside the vault directory. Optional authentication reads one named process environment variable. The separate macOS launcher starts the installed Obsidian application; it is not run by the plugin.

Token values are not stored in plugin settings, transfer history, logs, or source code. Settings contain a secret-storage reference or environment-variable name. Transfer history contains account IDs, file paths, article titles, content hashes, timestamps, status notes, and remote bookmark IDs; it does not contain complete article bodies. Treat the vault's plugin data as potentially sensitive and subject to your own sync configuration.

Image support and limitations

A live test on 2026-10-24 confirmed that a free Instapaper account saved a 354,289-byte PNG embedded in 472,669 bytes of HTML and displayed it in the Instapaper web reader at 1696 × 770. This establishes support for that sample, not a universal image or size guarantee.

  • Mobile/offline image retention, other image formats on the live service, and larger documents remain unverified.
  • Limits of 5 MiB per input document, 8 MiB per image, and 24 MiB per converted HTML body are plugin limits, not documented Instapaper limits.
  • Mermaid, Dataview, mathematical notation, and interactive HTML are not fully rendered.
  • The preview is not a replica of Instapaper's layout. A preserved image reference does not prove offline availability.
  • Multi-device deduplication, PDF upload, bulk sending, and public-app OAuth are outside the current scope.

See image findings and the validation record for evidence and unresolved cases.

Development

Use a recent Node.js release compatible with the pinned dependencies; the recorded local checks used Node.js 23.11.0 and npm 10.9.2.

npm ci
npm run check
npm run package

check runs typed lint, unit tests, manifest/README validation, notice generation, TypeScript checking, and bundling. package additionally creates a local installation archive and its SHA-256 checksum. These commands do not send articles or use a live account. Node.js and Electron APIs remain external to the browser-targeted CommonJS bundle; the plugin is explicitly desktop-only.

Tagged releases are built by the release workflow on GitHub Actions. It verifies the version and README title, tests and builds the plugin, generates build-provenance attestations, verifies them, and publishes only main.js, manifest.json, and styles.css. No personal token or Instapaper credentials are required. The workflow uses a temporary repository-scoped token and OIDC identity.

After downloading a release file, verify its provenance with:

gh attestation verify main.js --repo prorhap/obsidian-paperlane
gh attestation verify styles.css --repo prorhap/obsidian-paperlane

Earlier manually published releases have no such attestations. A checksum alone does not prove build provenance. Follow the contributor and release guide before tagging a version.

Documentation

Document Purpose
Requirements and UX Scope, expected behavior, and acceptance criteria
Architecture Conversion, credentials, API, journal, and recovery
Implementation and validation plan Completed work and remaining release gates
Sources and decisions References and evidence boundaries
Image findings Official documentation, user reports, and live tests
Usage Installation, credentials, sending, and troubleshooting
Obsidian guidelines review Official guidance mapped to this project
Directory review responses Changes and remaining warnings
Validation record Checks performed and checks still pending

License

MIT, copyright 2026 Chulwoo Choi. Bundled dependency notices are in THIRD_PARTY_NOTICES.md.

Optional AI review

In Paperlane settings, choose Bedrock API key, Gemini, OpenAI, or AWS profile, then link the provider key in secret storage for API-key providers. AWS profile connects to its helper automatically without token entry. Suggested models are preselected; overrides are under Advanced. AWS profile uses GPT-6 Astra with low reasoning through an authenticated local helper. Use Setup instructions to export and start it.

In an HTML preview, click Review with AI, inspect the findings, and choose Apply and preview. The model suggests formatting changes; Paperlane applies them to original text. No automatic uploads or provider fallback occur. AI assistance is off by default. Read setup, privacy boundaries, and limitations.

HealthExcellent
ReviewSatisfactory
About
Send Markdown or HTML files from your vault to your Instapaper account as readable articles, embedding local PNG/JPEG/GIF/WebP images and rasterizing limited SVGs to PNG. Preview conversions and check for missing content; preserve paragraphs, tables, code, footnotes, callouts and readable wiki-link labels; save to your Instapaper home or private folders, keep a local transfer journal, or export a standalone reading HTML without an account.
ExportIntegrations
Details
Current version
0.4.3
Last updated
3 weeks ago
Created
3 weeks ago
Updates
9 releases
Downloads
37
Compatible with
Obsidian 1.13.0+
Platforms
Desktop only
License
MIT
Report bugRequest featureReport plugin
Author
Chulwoo ChoiChulwoo Choiprorhap
GitHubprorhap
  1. Community
  2. Plugins
  3. Export
  4. Paperlane

Related plugins

Yanki

Sync flashcards from a folder in your vault to Anki. Pure Markdown syntax. No fuss.

GitHub

Share as Gist

Share a note as a GitHub.com Gist.

BRAT

Easily install a beta version of a plugin for testing.

LanguageTool Integration

Advanced grammar and spell checking, powered by LanguageTool.

Self-hosted LiveSync

Sync vaults securely to self-hosted servers or WEBRTC.

Fast Note Sync

Real-time sync of your vaults across server, mobile, and web; shareable with anyone; supports REST and MCP integrations to build your personal AI knowledge base.

Custom Frames

Turn web apps into panes using iframes with custom styling. Also comes with presets for Google Keep, Todoist and more.

Local REST API with MCP

Unlock your automation needs by interacting with your notes over a secure REST API.

Google Drive Sync

Syncs a vault into Google Drive for cross-platform use (works for iOS).

Maps

Adds a map layout to bases so you can display notes as an interactive map view.