Convert clipboard spreadsheet data to Markdown table
Project description
clipable
clipable converts spreadsheet data from your clipboard into a Markdown table — instantly.
Copy cells from Excel, Google Sheets, or any CSV/TSV source, run clipable, and the Markdown table is already in your clipboard, ready to paste into any document or wiki.
Why clipable?
Manually converting spreadsheet data to Markdown tables is tedious. clipable eliminates that entirely.
With watch mode, you don't even run a command — just copy cells from a spreadsheet and the clipboard is automatically converted. The flow becomes simply: copy → paste.
Install
pip install clipable
With uv:
uv tool install clipable
Usage
Watch mode (recommended)
Start the watcher once in a terminal. After that, every time you copy cells from a spreadsheet the clipboard is silently converted to Markdown in the background.
clipable watch
╭─────────────────────────────────────────────────────╮
│ clipable watch — watching clipboard │
│ Copy cells from a spreadsheet and they will be │
│ auto-converted to Markdown. │
│ Ctrl+C to stop │
╰─────────────────────────────────────────────────────╯
✓ Detected TSV — converted to Markdown and updated clipboard
╭─ Markdown ──────────────────────────────────────────╮
│ | Name | Age | Department | │
│ | ----- | --- | ----------- | │
│ | Alice | 30 | Engineering | │
│ | Bob | 25 | Design | │
╰─────────────────────────────────────────────────────╯
One-shot conversion
Copy cells from a spreadsheet, then run:
clipable
The clipboard is replaced with the Markdown table and printed to the terminal for confirmation.
Options
| Option | Default | Description |
|---|---|---|
-f, --format |
auto | Force format: tsv or csv |
-l, --linesep |
<br> |
Replacement string for in-cell line breaks |
--version |
Show version and exit |
For clipable watch:
| Option | Default | Description |
|---|---|---|
-l, --linesep |
<br> |
Replacement string for in-cell line breaks |
-i, --interval |
0.5 |
Clipboard polling interval in seconds |
Format auto-detection
clipable automatically detects whether your clipboard contains TSV (tab-separated) or CSV (comma-separated) data. Use -f to override when needed.
Example output
Input (copied from Google Sheets):
Name Age Department
Alice 30 Engineering
Bob 25 Design
Output (Markdown, written back to clipboard):
| Name | Age | Department |
| ----- | --- | ----------- |
| Alice | 30 | Engineering |
| Bob | 25 | Design |
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file clipable-0.5.0.tar.gz.
File metadata
- Download URL: clipable-0.5.0.tar.gz
- Upload date:
- Size: 45.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f89ed4b4ce34fd195c276cd2e022c564920381c13ddd3d837d2b616b4218bf17
|
|
| MD5 |
0d6f3ca6ebef1900459cd5b6283b03ac
|
|
| BLAKE2b-256 |
fae9c2d96e8611a3ecff6194c73ef3db4e11cfff36db541c36aa1257d9a053eb
|
Provenance
The following attestation bundles were made for clipable-0.5.0.tar.gz:
Publisher:
publish.yml on yujikawa/clipable
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
clipable-0.5.0.tar.gz -
Subject digest:
f89ed4b4ce34fd195c276cd2e022c564920381c13ddd3d837d2b616b4218bf17 - Sigstore transparency entry: 1388050537
- Sigstore integration time:
-
Permalink:
yujikawa/clipable@230c19c323c77c283e37b40782ebbece26884069 -
Branch / Tag:
refs/tags/v0.5.0 - Owner: https://github.com/yujikawa
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@230c19c323c77c283e37b40782ebbece26884069 -
Trigger Event:
push
-
Statement type:
File details
Details for the file clipable-0.5.0-py3-none-any.whl.
File metadata
- Download URL: clipable-0.5.0-py3-none-any.whl
- Upload date:
- Size: 7.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4ea656add16e6e0fe975754816188f95426d488643b01a4bebc5d2bc8adf0927
|
|
| MD5 |
b1b4071de467bdd083d200c8b7ba5cdd
|
|
| BLAKE2b-256 |
67aed6afc3e24721d0a1d928d7958aec2f28bdcc6cf769549576eb38731fc00e
|
Provenance
The following attestation bundles were made for clipable-0.5.0-py3-none-any.whl:
Publisher:
publish.yml on yujikawa/clipable
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
clipable-0.5.0-py3-none-any.whl -
Subject digest:
4ea656add16e6e0fe975754816188f95426d488643b01a4bebc5d2bc8adf0927 - Sigstore transparency entry: 1388050613
- Sigstore integration time:
-
Permalink:
yujikawa/clipable@230c19c323c77c283e37b40782ebbece26884069 -
Branch / Tag:
refs/tags/v0.5.0 - Owner: https://github.com/yujikawa
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@230c19c323c77c283e37b40782ebbece26884069 -
Trigger Event:
push
-
Statement type: