SingLayer Privacy Policy — English
Last updated: October 9, 2026. Local storage disclosure updated for extension version 0.4.315.
1. Operator and purpose
SingLayer is operated by the SingLayer developer. Contact: skykpm@naver.com. It helps users prepare and display synchronized lyrics and song information for YouTube-based singing broadcasts, including optional pitch adjustment, song requests and donation overlays. It does not require a SingLayer account and has no advertising or behavioral analytics service.
2. Information processed
After consent and activation, SingLayer reads the current YouTube video's ID, title, artist/channel information, duration, playback position and playback state. It processes search queries, lyrics selected or entered by the user, readings, translations, synchronization corrections and display settings. It does not read browsing history on unrelated websites, YouTube account passwords or authentication cookies.
Preferences, consent choices, recent songs, saved lyrics and annotations, synchronization corrections, limited search caches, pending sharing retries and randomly generated broadcast connection keys are stored in Chrome extension storage. General lyric search results are reusable for up to 24 hours within size and entry limits. The local lyric library retains up to 5,000 video records, including their readings, translations, word timings and synchronization corrections. When that limit is reached, saving another video removes the least recently saved unprotected lyric record. Manually entered or selected lyrics and songs with a personal synchronization edit are protected automatically, and the user can enable or disable protection for individual records in My data. If all 5,000 records are protected, existing records remain and the new record is not saved; playback can continue and a storage warning is shown. The unlimitedStorage permission lets this local library exceed Chrome's default 10 MB extension storage quota; it does not add website access or change optional sharing. Other settings and saved content remain until removed by the user or the extension's storage is cleared, subject to the feature-specific limits described here. Some temporary state uses Chrome session storage and is cleared when the browser session ends.
Unapplied manual lyric edits are saved locally as drafts: video ID, entered title/artist/lyric text, edit time and a fingerprint of the original lyrics for change detection. There is at most one draft per video and 20 drafts in total. Drafts expire 30 days after their last edit; expired drafts are removed when accessed or when another draft is saved, and older drafts are removed when the entry limit is reached. Restoring a draft only fills the editor and does not automatically apply lyrics, start translation or send the draft to a server. Successful application or choosing Discard removes the corresponding draft. Deleting all locally saved lyrics also clears drafts.
At the user's request, local backup exports a JSON file containing saved lyrics, readings, translations, word timings, synchronization corrections, playlists and pitch presets, songbook mappings and personal visibility choices, per-video styles and display settings. It excludes broadcast addresses and connection keys, consent settings, live requests and donation lists, drafts and search caches. Backup and restore do not upload the file to a server. Before restore, the user selects sections and sees additions and conflicts; existing data is kept by default unless replacing conflicting records is selected. The downloaded file remains at the user's chosen location and is not deleted by clearing extension storage. A source-tab lock is held for the current Chrome session; it is released when the tab closes or leaves a video page.
3. Lyrics, translation and optional sharing
LRCLIB, NetEase, QQ Music and Kugou receive song title/artist search terms. NetEase, QQ Music and Kugou also receive selected song identifiers; QQ Music and Kugou receive relevant song duration and album information when needed to retrieve lyrics. Requests use HTTPS without account cookies. QRC/KRC decoding runs locally in the extension; no music audio is downloaded or uploaded. The SingLayer service at music-translator.skykpm.workers.dev, hosted on Cloudflare Workers and KV, receives song information and video IDs to look up saved lyrics and synchronization, and lyric text to look up existing readings/translations.
When automatic lyrics and translation have been accepted, Japanese or English lyrics without saved annotations may be sent with song information through the SingLayer service to Google Gemini API. Manually requesting regeneration also sends this information. User-entered lyrics may be translated. Japanese processing produces Korean readings and translations; English processing produces Korean translations only. The video ID is used by the SingLayer service but is not included in the Gemini generation prompt.
During Japanese reading generation, QQ Music and NetEase may also receive the song title, artist and duration to find companion pronunciation tracks. Only references matched to the recording and lyric body are sent with the original lyrics to the SingLayer translation service and Gemini. Up to 12 reference results are cached locally for up to 24 hours; clearing the local lyric search cache or extension data removes them. Conflicting references are not treated as verified sung readings. No audio is captured or sent for this check.
The Gemini API project has an active linked billing account. Under Google's Paid Services terms, submitted content and generated responses are not used to improve Google's products or models. The applicable project terms, rather than whether usage incurs a charge, determine this treatment. Google's safety, abuse-prevention and legal processing still applies. Do not enter sensitive or confidential information into lyric fields. See the Gemini API terms and Google Privacy Policy.
Sharing is a separate, optional choice and is initially unchecked. When enabled, provider-sourced lyrics, readings/translations, song information, video IDs, timing corrections and revision times may be stored in the shared service and reused by other users. This includes lyrics manually selected from search and their synchronization corrections. The sharing choice also includes directly written or edited synchronized lyrics when the user applies them. Their lyrics, readings, translations, song information, video ID and timing are stored for that video only with a 90-day expiration after saving or updating. Previously saved local lyrics are not uploaded in bulk. When sharing is off, new shared uploads stop and translation requests specify that their results must not be saved in the public cache. Requests already in progress and copies already received by others cannot necessarily be recalled.
Newly stored or updated shared lyric, translation and synchronization records receive a 90-day expiration. Legacy synchronization records from earlier development versions that were stored without expiration may remain until separately removed.
Japanese karaoke reading alignment
When karaoke is enabled for provider-supplied YRC, QRC or KRC word timings, Japanese lyric text and its existing Korean pronunciation may be sent through the SingLayer service to Gemini to align their text segments. This generation follows the automatic-translation setting. Existing text is preserved; provider timing is reused without audio analysis or audio uploads. Valid mappings are saved locally and, only with optional sharing enabled for provider-sourced lyrics, in the shared cache with a 90-day expiration. Cached mappings can be retrieved without generating new ones.
4. Captions on the current YouTube video
SingLayer can inspect captions registered on the current video. Automatically generated captions are excluded. Registered captions that pass language, content and timing checks can be prioritized for automatic lyric matching or selected manually. Reading captions may temporarily change the player's caption language or visibility and then restore it. SingLayer does not download video or audio files.
Selected captions and synchronization are saved locally for that video. If optional sharing is enabled, caption text, timing, video ID and song information may be stored in the same Cloudflare KV service for reuse on that video, subject to the 90-day policy. They are not indexed as lyrics for different videos by song title. Translation follows the same consent and sharing choices described above.
5. Optional music metadata providers
Apple iTunes receives music search terms only when the user enables the additional provider and grants its optional site permission. MusicBrainz is also optional and disabled by default. If enabled and permitted, it receives cleaned title/artist queries when existing matching is insufficient; it does not receive audio, full lyrics or video IDs. MusicBrainz requests identify SingLayer using its app name, version and developer contact email.
The optional declarativeNetRequestWithHostAccess permission adds this application-identification header only to the extension's own GET requests to MusicBrainz's recording-search API, not to unrelated browsing. MusicBrainz queries are spaced by at least 1.1 seconds; a local cache holds at most 64 entries, reusable for 24 hours for results and five minutes for empty results. Disable the option or revoke the optional permission to stop new queries; clear extension storage to remove its cache. See MusicBrainz API documentation and its data licenses.
6. YouTube video search
SingLayer uses YouTube API Services to find videos for song requests and songbook entries. The visible query, such as a title, artist and “inst”, and an optional pagination token are sent to the SingLayer service and then to the Google YouTube Data API. Requester account IDs, nicknames and complete chat messages are not attached to search requests. Video IDs, titles, channel names and durations are returned for selection. Thumbnails are loaded directly from YouTube image servers. This feature does not request Google sign-in or OAuth access.
Identical search results may be reused for ten minutes, within an extension-memory limit of 32 entries and a service-memory limit of 100 entries. This search endpoint does not store queries or results in the lyrics KV database. For rate limiting, the service processes the requesting IP address and a request count in one-minute windows; expired entries are discarded on subsequent requests or runtime cleanup. A video the user selects may remain in a request session or a local playlist/songbook until removed through those features.
By using this YouTube search feature, users agree to be bound by the YouTube Terms of Service. Google's processing is governed by the Google Privacy Policy. YouTube separately controls its own page cookies, advertisements and sign-in. SingLayer does not read account passwords or authentication cookies.
7. Local playlists and the optional Reumdal songbook
Adding a video to a playlist stores its video ID, title, artist, original video title, duration, addition time and selected pitch locally. Videos are not automatically added simply because they were played. The playlist is not uploaded to a SingLayer account or synchronized between devices. Remove individual entries or clear extension storage to delete them. Thumbnail display requests the corresponding image from i.ytimg.com; playback opens the YouTube video.
For accidental deletion recovery, the most recent removed playlist entry, its former position/neighbouring video IDs, deletion time and an undo token are kept in local extension storage. Only one deletion snapshot is retained, and undo is available for 30 minutes. The snapshot is replaced by the next deletion, cleared after undo, or cleared on the next access after expiry. It is not uploaded or synchronized. Clearing extension storage removes it.
Connecting or refreshing the optional Reumdal songbook uses permission for reumdal.songlist.cloud to read public song IDs, artists, titles and coin amounts. No login, cookies or account-linking key is used. The downloaded songbook, manual video mappings and saved pitch choices remain in local extension storage. Hiding a song stores a local hidden-entry record that persists across songbook refreshes until explicitly restored. The songbook menu provides a Hidden Songs list for restoration. A manual mapping and pitch choice for a removed or hidden song may be retained locally so restoration can preserve them. Clear extension storage or uninstall to remove all mappings.
Existing entries can use mappings bundled with the extension. Newly added unmatched entries may query lyric providers and the YouTube search service for matching; the entire songbook is not repeatedly searched. Users can also search for and correct a mapping manually. Manual choices are not overwritten by automatic refresh. Identified songbook coin amounts may appear in the song-request overlay; the entire songbook and mapping list are not sent to the broadcast server.
8. Optional SOOP donation board and song requests
After separate feature consent and optional permission for live.sooplive.com, SingLayer requests public broadcast metadata for the selected channel and opens an anonymous, read-only connection to the SOOP chat endpoint identified by that metadata. It does not log in, read account cookies, or send user chat messages or donations. The incoming stream can contain general chat, which is not retained as a chat log. When requests are enabled, only applicable request commands are retained. While collection remains on and the broadcast is offline, public broadcast status is checked about every 15–17 seconds to reconnect after it starts. Stopping collection or revoking its optional permission stops these checks and new collection.
The donation board processes the donor nickname, public star-balloon count, image identifier/address and receipt time. Donor account IDs are excluded from stored cards and broadcast card payloads. Cards are kept in Chrome session storage up to the selected grid capacity, at most 100 cards. Channel ID, display settings, thresholds and consent choices are local settings. Clearing the board or changing the channel removes cards; ending the browser session clears session data. Test cards use the nickname “테스트” and do not send a real donation. No credit-card details, bank account information or payment credentials are collected.
Song requests process the request text, requester nickname/account ID, request time, processing state and any linked video. A zero normal-song threshold allows requests without a donation. Otherwise, an eligible donation grants a request via its accompanying message or a !신청 command within 15 seconds. Eligibility is short-lived in memory and cleared when collection stops. The difficult-song threshold is a display guide. There are at most 100 active requests and at most 200 retained session entries including processing states. Closing a tools window does not stop collection; ending the browser session or changing channels resets its session list. Users can remove requests, stop reception or withdraw request consent; withdrawing consent clears the list. To undo an accidental deletion, the last deleted request, its original position and an undo identifier remain in the service execution memory for up to 30 seconds. Undoing it clears that snapshot, and another deletion replaces it. The snapshot cannot restore requests after the list is reset, the session changes or request consent is withdrawn, and it is not sent to a server.
Playlist matching occurs locally. A user-selected request can play a matched or manually linked video; the request is removed when that linked playback finishes. The request overlay receives request/display text, artist/title, nickname, order, playback state/video ID and, where applicable, coin amount and album-art URL. Requester account IDs, general chat logs and entire playlists are not included. Donation cards and request overlays are delivered to the user's connected broadcast source over WebRTC, not stored in the Cloudflare signaling database. The broadcaster controls whether to make that output public.
SOOP card images are loaded directly from res.sooplive.com and static.file.sooplive.com. The optional channel-icon skin uses the saved channel ID to load its public profile image from stimg.sooplive.com without needing chat reception. These image providers process the network requests. Images are not stored or proxied by the SingLayer signaling service. SOOP features are not an official SOOP integration and may be affected by service changes.
9. Broadcast connections, local audio and fonts
When broadcasting is enabled, the service at lyricplayer-broadcast.skykpm.workers.dev processes random sender/receiver authorization keys and verification values, temporary connection IDs, and WebRTC signaling information such as SDP, ICE candidates and network/IP information. Keys authorize the connection and are not account passwords. The signaling service does not write keys, lyric content, chat or donation cards to an application database. Connection metadata is maintained for active WebSocket connections. Keep source URLs private: possession of a source URL grants access to its output.
Lyrics, annotations, song metadata, playback timing/state, selected display settings, audio-spectrum levels and enabled donation/request displays are sent directly to the connected browser source over a WebRTC data channel. Album artwork may be loaded directly from allowed YouTube/Google HTTPS image URLs. The signaling service does not proxy those images or relay original audio/video streams.
Pitch adjustment and audio-spectrum analysis process the current YouTube audio locally. Saved per-video pitch settings can be applied automatically when SingLayer is enabled. SingLayer does not capture microphone, screen or other applications' audio and does not save audio files or send original/processed audio through its servers or broadcast data channel. Turning pitch off stops the pitch DSP while keeping the local passthrough audio route.
Bundled fonts are shipped in the extension package, without requests to external font services. From version 0.4.226, lyric and song-information font selectors offer bundled fonts only. The extension no longer enumerates installed fonts or requests Local Font Access permission. Previously saved font names remain supported for compatibility and are stored as display preferences and sent to the broadcast source. No installed font list or font file contents are collected or transmitted. Users may revoke any earlier browser grant in Chrome settings.
10. Choices, retention and deletion
The Broadcast Tools window provides data-use/sharing settings and a separate button to delete all locally saved lyrics. That deletion clears local saved lyrics, readings/translations, lyric synchronization, lyric-search cache, unapplied lyric drafts and pending sharing retries; it does not delete playlists, display settings or shared server records. Replaying or searching again may retrieve shared server records again. Removing the extension or clearing its extension storage removes its local settings and saved data. Stopping a feature does not necessarily delete previously saved data.
Withdraw overall data-use consent to disable processing and stop new transmissions. Optional provider permissions and SOOP consent can be withdrawn separately. To request deletion or correction of shared service data, email skykpm@naver.com with the video URL/ID or song information and a description of the record. There is no user account tying a shared record to a person, so identifying information may be needed to locate it. Copies already obtained by other users cannot necessarily be recalled.
Third-party services receive network information such as IP address and request time and may process it in other countries. Their operational/security retention and legal obligations are governed by their policies, including the Cloudflare Privacy Policy. User-initiated support correspondence is used to answer the request and identify the relevant records.
11. Limited Use and changes
SingLayer's use and transfer of user data is limited to providing or improving its disclosed user-facing functions, consistent with the Chrome Web Store User Data Policy, including the Limited Use requirements. SingLayer does not sell user data or use it for personalized advertising, creditworthiness/lending decisions, or general-purpose AI model training. Human access by the operator is limited to permitted cases such as user-consented support/deletion requests, security investigations and legal obligations. Material changes will be disclosed and additional consent obtained where required.
Automatic pronunciation review
Japanese readings and translations are displayed in validated batches while remaining lines are generated. Incomplete batches are temporary and are not saved as a completed song. Public pronunciation evidence may be fetched alongside generation without delaying the first display. In the background, SingLayer sends the current lyrics, generated readings and translations, song title and artist to its translation server for a second review. The server searches UtaTen using only the song title and artist, reads public pronunciation annotations, and applies corrections only when song identity, lyric text and reading boundaries can be verified. UtaTen receives requests from the server, not your browser cookies or account. Public-page matching does not send audio or make another Gemini generation request. The generation pipeline may make bounded Gemini retries to correct invalid pronunciation mappings or a confirmed meaning conflict. Web page HTML is not retained. Successfully parsed public song metadata, lyric text and pronunciation annotations may be reused in server memory for up to five minutes (at most 24 entries); this temporary cache contains no user-generated readings, translations or identifiers. Unavailable, conflicting or unmatched evidence leaves the generated readings unchanged. Verified readings are saved locally and shared only under the existing optional lyric-sharing setting and retention policy.