Permissions, Security, and Privacy
Tablerone was designed to protect users’ privacy because we value it ourselves.
- We can not see your application data (your browsing history)
- We do collect some developer data about usage and metadata about users — all anonymous and fully compliant with GDPR, CCPA, and PECR regulations
- We are fully committed to our pledge to never snoop on you, never share data with third parties, and to address any potential privacy breaches
Table Of Contents
— Application permissions
— Application data
— User data
— Usage data (analytics)
— Caveats and opt-out
— Business model
— Open-source
Application permissions
As a browser extension app, Tablerone relies on browsers’ API capabilities to deliver its functionality. Upon installing Tablerone, you are granting the extension permissions to access information and data in your browser.
These are regularly audited for security and privacy by Google’s technical team before being approved into Chrome Web Store.
favicon | Used to show favicons of the websites you visit in the Tablerone timeline. |
tabs | Enables Tablerone to interact with the browser’s tab system to create, modify, and rearrange tabs in the browser. |
activeTab | Provides information about active tab when invoked via the action or context menu and enables screenshots via captureVisibleTab. |
bookmarks | Enables Tablerone to import bookmarks as sessions and mirror its database within bookmarks to be synced with other devices. |
contextMenus | Used for right-click menu features (e.g. adding notes, naming the collection, toggling sleep/awake etc.) |
alarms | Used for triggering the Tab Sleep and Daily Clean-up functions at a particular time. |
host permission | <all_urls> — Grants the extension access to all hosts. We need it to ensure we don’t run into problems when calling 3rd party services (such as Mixpanel). https://tabler.one — For calling services on Tablerone server (in-app notifications and share functionality). |
storage | Allows access to a limited storage area in the browser. Used to safely store user application data backups. |
unlimitedStorage | Tablerone IndexedDB was getting wiped by browser storage eviction; this permission guarantees exempt from that. |
offscreen | Browser-provided hidden page enabling extensions to perform manipulation without opening windows or tabs. Used to manipulate screenshot images. |
downloads | Used for downloading exported Tablerone data. (Optional, and sought only when required. Can be denied.) |
Application data
Your application data (browsing history, saved collections, tags, etc.) is stored locally and leaves your device only if:
- You opt-in to “Add Tablerone sessions to Other Bookmarks” — this feature stores a copy of your Tablerone collections as native bookmarks, which can be uploaded to your browser vendor’s cloud storage and synced with other devices using the same profile.
- Use the “Publish” functionality to share specific collections with other people — in which case only the selected links are uploaded to our servers, made accessible to others, and automatically deleted after one day/week/month (user’s preference).
User data
The “no account” claim means that Tablerone works without standard e-mail and password log-in credentials.
Personal data
Personal data (first name, last name, and e-mail address) is collected only when you make a donation (required by the law) or send us an e-mail. We have no way to cross-reference or match your personal information with your user ID and associated usage data.
User metadata
Tablerone does collect some metadata about users and the way they use Tablerone through Mixpanel analytics. This metadata is stored under anonymised user IDs which can not be associated with any of your digital identities. Following is the full table of user profile properties being collected.
Property | Property Description |
$last_seen | Timestamp of the last profile update. |
$distinct_id | The way to uniquely identify your users. You can set this to any value using the identify method. Some Mixpanel libraries assign a random value by default. |
$city | The city of the event sender, parsed from IP. |
$country_code | The two-letter country code of the event sender, parsed from IP. |
$geo_source | Internal Mixpanel property to record the source used to determine location |
$region | The region (state or province) of the event sender that is parsed from IP. |
$timezone | The timezone of the event sender, parsed from IP. If set, messages can be scheduled to be sent based on a user's timezone. |
$browser | The browser being used at the time the event was fired. (Not versioned) |
$browser_version | The version number of the browser being used at the time the event was fired. |
$initial_referrer | The referring URL at first arrival. |
$initial_referring_domain | The referring domain at first arrival. |
$os | The operating system of the event sender. |
USER_ID | |
autoSaveToBookmarks | Whether to save to bookmarks or not (Add Tablerone sessions to Other bookmars enabled) |
closeTabsAndSave | If true, we have one button (Save & close), if false we have two buttons (Save / Close) |
doNotSuspendActiveTabs | Free memory and CPU > unless "In focus" |
doNotSuspendAudibleTabs | Free memory and CPU > unless "Playing Audio/Video" |
doNotSuspendPinnedTabs | Free memory and CPU > unless "Pinned" |
doNotSuspendWhitelist | This is always true - we never suspend tabs from whitelisted domains. |
newWindowMode | ['one', 'two'] we assume from this setting also what user wants as "newTabMode", one => new tab is tablerone, two => new tab is default |
notification0Clusters | Was initial notifications at 0 Clusters seen: "Saving tabs will also close them. It’s “OK”, don’t panic..." |
notification100Clusters | Was notification at 100 saved clusters seen: "Happy 100th collection! We sincerely hope Tablerone helps you stay focused and achieve goals every day. Please, consider donating so we can keep Tablerone fresh and in shape!" |
notification10Clusters | Was notification at 10 saved clusters seen: "Hi! We are thrilled that you adopted Tablerone. Please, rate it on Chrome Web Store and tell us how we can improve!" |
openCollectionSuspended | Speedy loading enabled. |
popupButtonClickAction | If "openPopup" => we open popup, we just save. If "openTableroneTab" => we open Tablerone tab (old setting). If "openManagerTab" => dropdown with tabs to manage. |
settingsVersion | If we update settings, we upgrade version. For future planning in mind. |
sleepEnabled | Is Daily clean-up enabled. |
sleepHour | At what hour does clean-up start. |
store | From which store was extension loaded (future-proofing, all values are "chrome" at the moment). |
suspendEnabled | Does user have Put tabs to sleep enabled |
suspendTimeMinutes | After how many minutes do we suspend/discard tab. |
tableroneDateFormat | Date format set in Settings > Time. |
tableroneTimeFormat | Time format set in Settings > Time. |
tableroneTimestampFormat | |
userFromDate | From when does user use the Tablerone (install date) |
userUid | Unique ID of the user |
tableroneVersion | Version of Tablerone user is running at the moment |
notificationSuspendOptInShown | If true, suspend notification was shown. "X tabs are slowing your computer. Put them to sleep?" |
notificationSeanEllis2021Shown | If true, SeanEllis notification was shown. |
theme | Automatic => from OS, "dark" => Dark, "light" => Light |
allFavouriteCollections | Number of favourite collections |
allTaggedCollections | Number of collections with 1 or more tags |
allTagsInCollections | All different tags in collections |
opened | Counter: last number of opened collections |
openedHidden | Counter: last number of hidden collections (getting started etc.) |
openedVisible | Counter: last number of visible collections (listed on Tablerone tab) |
openedVisibleTabs | Counter: last number of tabs in visible collections (listed on Tablerone tab) |
saved | Number of saved collections |
savedTabs | Number of tabs in all saved colections |
suspendWhitelist | Array of suspend whitelist. |
dbNotificationProductHuntTickerShown | |
uninstalled | If true => user has uninstalled the product and does not use it anymore. |
uninstalledDate | Date of uninstall. |
backupHour | |
extensionsDisabled | We tried to find out if extension is disabled => impossible, ignore this when doing analysis. |
extensionsEnabled | We tried to find out if extension is disabled => impossible, ignore this when doing analysis. |
extensionsEverDetected | Legacy: ignore |
extensionsInstalled | Legacy: ignore |
newTabOrHomeMode | Legacy: ignore |
backupTime | |
backupEnabled | |
suspendViaDiscard | Legacy: ignore |
$distinct_id_before_identity | Internal Mixpanel property to track an events original $distinct_id before it updated due to $identify, $merge, or $alias. Only events that were copied over the canonical identifier have this property set. This property can be used to determine an event's $distinct_id before it was merged. |
$had_persisted_distinct_id | |
$insert_id | A random 36 character string of hyphenated alphanumeric characters that is unique to an event. Used to deduplicate events. |
$ip_hash | A hash of the ip for trends purposes |
$is_reshuffled | Internal Mixpanel property to identify if the event data is currently shuffled due to a recent identity merge |
mp_processing_time_ms | Time in milliseconds in Unix Time Stamp when an event was ingested by Mixpanel. While the "Time" property in Mixpanel is set in the time zone specified by the project, mp_processing_time_ms will always be in UTC (GMT) time. |
Usage data (analytics)
Anonymised website data
We use Plausible Analytics to analyse our website traffic without tracking. For detailed information, please see Compliance details, Metrics and definitions, and Data Processing Agreement.
Anonymised usage data
We use Mixpanel to collect event-based data about which Tablerone functionalities are being used, when, and how. Following is the full table of events and properties being collected.
Event | Event Description |
suspendTab | A tab is automatically put to sleep with the browser’s native discard method if the “Free memory and CPU: Put tabs to sleep after MM min of inactivity” setting is enabled. |
tableroneTabFocused | Tablerone tab becomes set to focus. |
tableroneTabLoaded | Content of the Tablerone tab is loaded automatically by opening a new browser window or manually by selecting the right-click context menu item or using a keyboard shortcut. |
collectionReopen | A collection is reopened by clicking the “Open all” button. |
collectionTabXClicked | An open tab inside a collection is closed by clicking the “X” icon button in the collection list. |
collectionTabTitleClicked | A tab is set to focus (if collection active) or opened as a new tab in the current window (if collection inactive) by clicking the tab’s page title in the collection list. |
collectionSave | A collection is saved by clicking the “Save” or “Save & Close” button. |
extensionButtonClick | A user-assigned action is triggered by clicking the Extension Button in the top right corner of the browser (default value: open save menu). |
collectionShowAllClick | A collection is expanded into the Highlight view by clicking the “Show all (#)” button below the collection list truncated to five items. |
collectionTabClose | A currently active collection is closed (with all tabs discarded) by clicking the “X Close” button (Note: applies only when the “Close tabs after saving” setting is OFF). |
collectionDelete | A collection is deleted from the Timeline by clicking the “Trash” icon. |
sidebarOpen | The sidebar is opened by clicking the “Open sidebar” icon in the top left corner. |
sleep | The “Daily clean-up” action is automatically triggered (if the “Autosave all tabs from the previous day at HH:MM” setting is enabled) |
popupAction | The Save Menu is opened by clicking the Extension Button in the top right corner of the browser, recorded after performing a specific action other than closing the menu. (Check “type” property for specific action.) |
$identify | Mixpanel event that merges an $anon_id and an identified $identified_id. |
collectionTitleUpdate | A collection title is changed by clicking the green checkmark icon button in the title edit mode. |
timelineSearchQuery | Tablerone Timeline is limited to collections containing a match with a search query string by typing at least three characters into the search input field. |
unsuspendTab | A currently selected tab is awakened by clicking “Tablerone > Put this tab sleep / Wake this tab” within the right-click context menu anywhere on a page. |
collectionScreenshotClick | A click on a collection screenshot is recorded; the action expands a collection into the Highlight view (same as “collectionShowAllClick”) |
settingsOpen | The “Settings” modal window is opened by clicking the “Settings” button (cog wheel icon) in the bottom right corner. |
splashSlide | A slide is moved forward/back within the “Getting started” user onboarding slideshow by clicking the arrow or pagination buttons. |
sidebarClose | The sidebar is closed by clicking the “Close” button (“X” icon). |
collectionArchiveDelete | A collection in the Archive is deleted by clicking the Trash icon. |
openNewWindowViaButton | A new session is started as a new browser window by clicking the “New session +” button on the top of the Timeline. |
sidebarOpenArchive | The archive timeline is opened by clicking the “Archive” link under the Tags section of the sidebar. |
splashLoaded | The “Getting started” user onboarding slideshow is loaded. |
sidebarFavouritesCollectionClick | A favourite collection is scrolled into view and expanded into Highlight view by clicking its title within the Favourites section of the sidebar. |
collectionFavourite | A collection is added to Favourites by clicking the “Add to Favourites” button (empty heart icon). |
collectionClose | A collection is closed by clicking the “Close” button (Note: this is not the same as the “Save & Close button”) |
collectionTagsUpdate | Tags describing a collection are added or modified by clicking the green checkmark icon button in the tag edit mode. |
exportCollection | A collection is copied to the clipboard in a format selected from the dropdown menu by clicking the “Copy as” button. |
uninstalled | Tablerone is uninstalled by clicking the “Remove” button within the browser’s about:extensions page. (Note: triggered by visiting a URL when uninstalling) |
nuke | All sessions are saved and closed by clicking the “Save & close all” button in the top right corner or pressing the keyboard shortcut combination. |
collectionCollapseAndReturnToTimelineClick | A collection in the Highlight view is collapsed by clicking the “Collapse and return to timeline” button. |
buttonNukeClick | “Save & close all" button is clicked. |
collectionCopySelectedTabs | Selected tabs (via checkbox) are copied to another collection by clicking the “Copy to” button and selecting/creating a collection from the dropdown menu. |
clusterFocus | Focus is set to an open Favourite collection by clicking on the floating right arrow icon in the sidebar. |
sidebarTagClick | A tag-specific timeline is opened by clicking the tag’s title link under the Tags section of the sidebar. |
timelineSearchTag | A specific tag’s timeline is limited to collections containing a match with a search query string that corresponds by typing at least three characters into the search input field. (Note: next event after sidebarTagClick) |
shareCollectionPopupOpened | The “Share” modal window is opened by clicking the “Share” button within a collection. |
collectionMoveSelectedTabs | Selected tabs (via checkbox) are moved to another collection by clicking the “Move to” button and selecting an existing collection from the dropdown menu. |
emptyArchive | All collections in the Archive are permanently deleted by clicking on the “Empty Archive” button. |
contextMenuSuspend | A currently selected tab is put to sleep by clicking “Tablerone > Put this tab sleep / Wake this tab” within the right-click context menu anywhere on a page. |
collectionArchiveRestore | A collection in the Archive is restored by clicking the “Restore” button. |
settingsImportOpen | The “Data import” modal window is opened by clicking any of the buttons within the “Settings > Import data” option. |
editNotesPopupOpened | A note editor modal window is opened by clicking the “Add+” button in the collection list within the Highlight view. |
exportTablerone | All Tablerone application data is exported in a selected format by clicking an option from the “Export data” pulldown menu in the Settings. |
collectionMoveSelectedTabsToNewCollection | Selected tabs (via checkbox) are moved to a newly created collection by clicking the “Move to “button and creating a new collection from the dropdown menu. |
shareCollection | A collection is shared as a web page by clicking the “Publish collection” button within the “Share” modal window. |
contextMenuNewTableroneTab | Tablerone is opened in a new (unpinned) tab by clicking “Tablerone > Open new Tablerone tab” within the right-click context menu anywhere on a page. |
import | Application data (OneTab, Session Buddy, or Tablerone backup) is imported by clicking the “Import” button in the data import modal window. |
helpCenterOpen | Tablerone Help Center modal window is opened by clicking the “Help” button (“?” icon) in the bottom left corner. |
favouritesReorder | A favourite collection is assigned to a new position within the Favourites sidebar list by drag-and-dropping it. |
collectionTabCloseMultiple | One or more open tabs inside a currently active collection are closed by selecting them with checkboxes and clicking the “Close selected” button. |
collectionTabNoteSave | A custom note associated with a specific tab is saved by clicking the “Save changes” button within the Add/Edit modal window. |
collectionUnfavourite | A collection is removed from favourites (in the sidebar list) by clicking the “Remove from favourites” (solid heart icon). |
searchEmptyInput | This event has been deprecated. |
suspendMultipleTabsManual | One or more tabs are manually put to sleep by selecting them with checkboxes and clicking the “Sleep” button. |
bookmarksImport | Tablerone’s import bookmarks feature is triggered. |
shareCollectionShareSpecific | The “Share with specific people” is turned ON by clicking the toggle within the “Share” modal window. |
contextMenuDisplayScreenshots | A screenshots viewer is opened in a new tab by clicking “Tablerone > Display screenshots” within the right-click context menu anywhere on a page. |
helpcenterFaq | Tablerone Help and Support website is opened in a new tab by clicking the “All support articles” link in the FAQ section within the Help Center modal window. |
unsuspendMultipleTabsManual | One or more tabs are reloaded by selecting them with checkboxes and clicking the “Wake” button. |
donateClick | Tablerone’s donate page is opened in a new tab by clicking any donation link instance (e.g. in Settings). |
helpcenterSeeWalktroughVideo | The walkthrough demo video is played by clicking the video player in the “Getting started” user onboarding slideshow. |
helpcenterWriteAReview | Tablerone’s Chrome Web Store listing page is opened in a new tab by clicking the “Review on Chrome Web Store” link within the Help Center modal window. |
emptyArchiveCanceled | Empty archive action is cancelled by clicking on the “Cancel” button within the alert dialogue. |
collectionTabNoteDelete | A custom note associated with a specific tab is deleted by clicking the “Delete note” button within the Edit modal window. |
contextMenuRateUsOnChromeStore | Tablerone’s Chrome Web Store listing page is opened in a new tab by clicking “Tablerone > Rate us on Chrome” within the right-click context menu anywhere on a page. |
reportABug | A new email compose window is opened in the default email client by clicking the “Email: feedback@tabler.one link within the Help Center modal window. |
contextMenuNameThisCollectionClick | The current collection’s title is changed to match the text selected on a page by clicking the “Tablerone > Name this collection” option in the right-click context menu. |
contextMenuNameThisTabClick | Selected text on the page is added as a note by clicking “Tablerone > Add note to this tab” within the right-click context menu anywhere on a page. |
$session_end | Mixpanel's virtual event triggered at the end of each user's session. Customize session timeout length, exclude events from sessions, or define event based sessions in project settings. |
$session_start | Mixpanel's virtual event triggered at the start of each user's session. Customize session timeout length, exclude events from sessions, or define event based sessions in project settings. |
notificationSuspendOptInShown | The Settings modal window is opened with the “Free memory and CPU “option highlighted after clicking the call to action button within this notification. |
notificationSeanEllis2021Shown | A Sean Elliott Test survey form is opened in a new tab after clicking the call to action button within this notification. |
customNotification | User clicks the call to action button within a custom notification; occasionally shown to all or specific users (by targeting anonymous user IDs that match a usage pattern) |
Caveats and opt-out
We use Iubenda’s standardised Terms of Service and Privacy Policy legal documents.
“Types of Data collected” section states that “Unless specified otherwise, all Data requested by this Application is mandatory and failure to provide this Data may make it impossible for this Application to provide its services.”
Technically, Tablerone can work without collecting any of the aforementioned data. However, usage analytics data is a crucial instrument for understanding how people use our application and being able to improve it.
We think it’s fair to collect anonymous usage data given the product and support are provided free of charge. In the future, we intend to provide a way to opt-out of it.
Business model
Currently, Tablerone is self-funded as we are still in the validation stage.
We accept and encourage donations as a signal of user satisfaction and business potential.
In the future, we intend to develop premium features that will ensure the sustainable long-term operations of the company.
Open-source
We know that open-source is the best way to stay accountable by enabling the public to verify our claims, so we pledge to open the codebase and roadmap once we pass the 1M ARR milestone. This is to secure a safe head-start and value of our intellectual property in a saturated and highly competitive market.