Last updated 2026-05-30 (added ยง3 covering the PortCast Export browser extension; narrowed extension host permissions to open.spotify.com only)
Privacy policy
This policy covers three distinct surfaces operated by Trimplayer: the PortCast spec site at portcast.org, the PortCast Spotify export service at import.portcast.org, and the PortCast Export browser extension. They handle data very differently, so each is described on its own.
1. portcast.org — the spec site
portcast.org is a static documentation site describing
the PortCast protocol. It does not require an account, does not
accept user input, and does not collect personal information.
The site loads Google Analytics 4
(measurement ID G-F72L90KQPR) for aggregate traffic
statistics. Google may set cookies and process IP-address-based
location data under
Google’s
privacy policy. You can opt out by blocking analytics in
your browser or installing the
Google Analytics
opt-out add-on.
No other third-party scripts run on portcast.org.
2. import.portcast.org — the Spotify export service
import.portcast.org is a stateless service that takes
a listener’s Spotify library and returns it as a
.portcast.json download. It exists as a reference
implementation of the PortCast protocol — you can read its
source on
GitHub.
What data we access
When you click Connect Spotify, you are redirected to Spotify’s authorization screen. If you approve, we request the following scopes only:
user-library-read— your followed shows and saved episodes.user-read-playback-position— the resume position Spotify records for your saved episodes.user-read-email,user-read-private— your Spotify display name and email, written to theownerfield of the export so the file is self-identifying when you re-import it elsewhere.
What we do with the data
We use the access token Spotify issues to call the Spotify Web API and fetch the data above once. We assemble it into a PortCast document and return it to you as a file download.
We do not store the data on disk, in a database, or in any backup. There is no user account, no server-side history, and nothing to delete — once the response is sent, the data exists only in your downloaded file. The PortCast export service has no database.
Cookies
To complete the OAuth round-trip we set two short-lived cookies on
import.portcast.org, both
HttpOnly, Secure, and
SameSite=Lax:
pc_state— a signed anti-CSRF state value valid for 10 minutes, used to verify the redirect coming back from Spotify.pc_tok— a signed cookie carrying your Spotify access token from the OAuth callback to the export step, valid for 5 minutes and cleared the moment the export response is generated.
Both cookies are cryptographically signed with a server-side
secret. We use no analytics cookies or third-party trackers on
import.portcast.org.
Third parties
The only third party involved is Spotify (the source of the data you are exporting). Your use of the Spotify authorization flow is governed by Spotify’s privacy policy and terms of use. We do not share your Spotify data with any party other than you.
Revoking access
You can revoke our app’s access to your Spotify account at any time from your Spotify account’s connected-apps page. Because we hold no long-lived token, revocation takes effect immediately the next time you would otherwise return to the service.
3. PortCast Export — the browser extension
PortCast Export is a Chrome / Edge browser
extension that performs the same job as
import.portcast.org but entirely on the user’s
own machine, without any of the listener’s data ever
reaching us. Source code lives on
GitHub.
How it works
When you click the extension’s toolbar icon and choose
“Export from Spotify,” the extension uses your
existing open.spotify.com session — the
same one Spotify’s own web player uses — to call
a small number of read-only Spotify Web API endpoints. The
response is held in your browser’s memory just long
enough to assemble a PortCast document, and saved to disk
via the standard browser Save-As dialog. No request is sent
to Trimplayer or to import.portcast.org.
What data the extension reads
The extension requests the following Chrome permissions:
downloads— to write the.portcast.jsonfile via the browser’s Save-As dialog.scripting— used to run the Spotify fetch inside a realopen.spotify.comtab. This is required because Spotify’s servers reject the same fetch issued from the extension’s own background context. If you don’t haveopen.spotify.comopen when you click Export, the extension briefly opens it in a background tab and closes it again when the export finishes. The extension does not request the broadertabspermission — tab queries and tab creation are scoped toopen.spotify.comby the host-permission list.- Host access to
open.spotify.comonly — so the extension can read your library from the Spotify web player tab you are signed in to. The extension never reads any other site.
The scripting permission is
fenced by the host-permission list: the
extension can only inject scripts into tabs whose origin
is open.spotify.com. It cannot read or modify
any other tab. It does not request
<all_urls>, activeTab, or
the broader tabs permission that would
expose URLs of other tabs.
Storage, sharing, telemetry
- Storage: the extension stores nothing
on disk between sessions. There is no
storagepermission and no IndexedDB use. During a single export run it may temporarily write a captured Spotify access token to the open.spotify.com tab’ssessionStorage(in order to move the token from the Spotify-page JS world to the extension’s code); those entries are explicitly cleared fromsessionStoragewhen the export completes, succeeds, or fails. Your exported file lives wherever you chose to save it. - Sharing: the extension never contacts any server other than Spotify. There is no telemetry, no analytics, no remote logging, and no auto-update channel beyond the standard Chrome Web Store mechanism.
- Third parties: the only third party in the loop is Spotify, whose privacy policy governs the underlying account.
Revoking access
Because the extension only acts when you click its icon and
only uses your existing Spotify session, “revocation”
is two distinct actions: removing the extension (Chrome →
chrome://extensions → Remove) stops it from
ever running again, and signing out of Spotify on
open.spotify.com invalidates the session it would
have used.
4. Hosting and jurisdiction
Both services are operated by Trimplayer. The static site at
portcast.org is served by GitHub Pages. The
export service at import.portcast.org runs on
infrastructure hosted by Amazon Web Services in the United States.
5. Changes to this policy
We will update this page if the data flows above change. Material changes will be reflected in the “Last updated” date at the top of this page.
6. Contact
Questions or concerns about privacy can be sent to trimplayerapp@gmail.com.