# Sindre Sorhus > Full-Time Open-Sourcerer & App Maker --- # Mailway Route mailto links to any email app or webmail. URL: https://sindresorhus.com/mailway Click an email address on a website or in an app, and it opens in the email app or webmail you use, like Gmail, instead of Apple Mail. Pick your primary email app, add optional rules, and every mailto link goes to the right place. Works system-wide, not just in the browser. The app doesn’t need to stay running. It launches only when you click a mailto link, routes it, and quits. Zero CPU and memory usage when idle.
> [!TIP] > You may also like my [Velja](https://sindresorhus.com/velja) app, which does the same but for browser links.
#### Example use-cases - Use Gmail for work emails and Apple Mail for everything else - Open emails to a specific domain in Outlook - Route mailto links clicked in Slack to Gmail - Use Fastmail for personal email and a custom webmail URL for your self-hosted email #### Webmail The app opens the compose window directly in your browser with the recipient, subject, and body pre-filled. Built-in support for: - Gmail (including custom domains) - Fastmail - Outlook 365 - Outlook.com - Yahoo - Yandex - AOL - Zoho Any other webmail service can be added using the “Custom URL” option with [URL template](https://en.wikipedia.org/wiki/URI_Template) variables. I’m happy to add built-in support for more providers. Just [send me](https://sindresorhus.com/feedback?product=Mailway&referrer=Website-FAQ) a link to their compose URL documentation. Tip: Use [Velja](https://sindresorhus.com/velja) with a rule where Mailway is the source app to open webmail links in a specific browser or browser profile. #### Copy to Clipboard Don’t want to open anything? Set the target to “Copy to Clipboard” and clicking a mailto link will copy the email address to the clipboard instead. --- ## Tips ### Alternative email app Hold a Fn key when clicking a `mailto:` link to use an alternative email app, bypassing all rules. ### Shortcuts The app provides Shortcuts actions for composing emails, getting and setting the primary and alternative email targets, and enabling or disabling rules. You can use these to automate your email workflow. ## Frequently Asked Questions {#faq} ### Why do I need to set the app as the default email app? The app works by being the system default email app. This is the only way macOS allows an app to intercept and route mailto links. ### Do I need to create rules? No. If you just want all mailto links to open in a single email app or webmail service, set it as your primary target and you’re done. Rules are optional. ### Can I set different email apps for work and personal use? Yes. Create a rule that matches your work domain (e.g., `company.com`) and set it to open in your work email app. Everything else goes to your primary email app. ### Does it work with third-party email apps like Spark or Airmail? Yes. The app works with any email app installed on your Mac that handles mailto links. ### Can you provide an interactive picker to choose the email app each time? No. The app is designed to be set-and-forget. You configure your primary email app and rules once, and it routes mailto links automatically. There are no plans for an interactive prompt. ### How can I open a mailto link in a specific browser or browser profile? Use [Velja](https://sindresorhus.com/velja) and create a rule with Mailway as the source app to open webmail links in a specific browser or browser profile. ### Can I use different email apps for different recipients? Yes. Create rules in the Rules tab to route emails by recipient address, domain, or subdomain. ### Can I route based on which app the link was clicked in? Yes. When creating a rule, you can add source apps as a condition. For example, route all mailto links clicked in Slack to Gmail. A rule doesn’t need recipient matchers, so you can match by source app alone. ### Does it handle mailto links with multiple recipients? Yes. All recipients, including CC and BCC, are passed through to the email app or webmail service. ### Does it work with “Contact us” buttons on websites? Only if the button uses a `mailto:` link. Some websites use web forms instead, which the app cannot intercept. ### I clicked an email address but nothing happened {#troubleshooting} Make sure the app is set as the default email app in the settings. Also verify the link is an actual `mailto:` link and not a web form or a plain text email address. ### My webmail opens with an empty compose window The webmail service may not support all URL parameters. Try a different webmail option or use the “Custom URL” option to adjust the compose URL for your service. ### Can you add support for my webmail service? {#add-webmail} The app already supports any webmail service through the “Custom URL” option. Set it to the compose URL of your service using [URL template](https://en.wikipedia.org/wiki/URI_Template) variables: `{to}`, `{cc}`, `{bcc}`, `{subject}`, `{body}`, `{mailto}`, and `{domain}`. If your service doesn’t have a public compose URL, there’s unfortunately nothing the app can do. Contact them and ask for one. ### Does it work with Proton Mail? If you have the [Proton Mail desktop app](https://proton.me/mail/download) installed, you can select it as your email app in the settings. Proton Mail does not provide a public web compose URL, so the webmail option is not available. [Vote for it here.](https://protonmail.uservoice.com/forums/284483-proton-mail-calendar/suggestions/7158477-mailto-links-direct-to-protonmail) ### Can I match rules by the email subject or body? No. Rules can only match by recipient (email address, domain, or subdomain) and source app. ### Can I use regex in rules? No. Rules use exact email matching, domain matching, or domain suffix matching. For most use-cases, domain matching is sufficient. ### Does the app collect any data? No. The app is sandboxed and does not collect, store, or transmit any data. ### How do I go back to Apple Mail? Change the default email app back to Apple Mail in “System Settings › Default Apps”. ### Can you support iOS? {#ios} No. iOS does not allow apps to intercept `mailto:` links the way macOS does. ### Can you add a “Launch at login” setting? It’s not needed. Unlike [Velja](https://sindresorhus.com/velja), Mailway does not run in the background. It launches only when you click a `mailto:` link, routes it, and quits right away. There’s nothing to keep running, so there’s no “Launch at login” setting. ### How is it different from Velja? Why isn’t it part of Velja? {#velja} [Velja](https://sindresorhus.com/velja) routes browser links (URLs) to different browsers and apps. Mailway routes `mailto:` links to different email apps and webmail services. Keeping them separate means each app stays focused and simple. They work great together though. ### How does it compare to Open In Webmail? {#open-in-webmail} Mailway benefits: - Route to native email apps, not just webmail - Rules based on recipient, domain, or source app - Alternative email target with modifier key - Shortcuts actions - Actively maintained [Open In Webmail](https://apps.apple.com/app/id1451552749) benefits: - Built-in support for choosing browser. Mailways defers to [Velja](https://sindresorhus.com/velja) for that. --- # Imago Generate images from text using Flux 2. URL: https://sindresorhus.com/imago Describe the image you want, and the app makes it for you. It runs locally on your device. It uses the FLUX.2 [klein] 4B model. This app is focused on simplicity. No custom models, no complicated settings, no workflow editors. Just type a prompt and get an image. If you need fine-grained control, custom models, or advanced workflows, check out [ComfyUI](https://www.comfy.org). Imago is for everyone else. > [!IMPORTANT] > Requires an Apple silicon Mac (no Intel), minimum 16 GB RAM, and 20 GB free disk space. [Flux](https://en.wikipedia.org/wiki/Flux_(text-to-image_model)) is a deep learning, text-to-image model used to generate detailed images conditioned on text descriptions. ## Tips ### Preview Click a thumbnail to view a larger version of it. Click again to exit. ### Keyboard shortcuts When in preview mode, there are some keyboard shortcuts available: - ◀ — Previous image - ▶ — Next image - Space — Save image - Command+C — Copy image - Esc — Exit preview ### Metadata When you save a generated image, it includes a lot of useful metadata (prompt, model, etc). You can [view this in Finder](https://x.com/sindresorhus/status/1611441129622278146/photo/1) by right-clicking the image file and selecting “Get Info”. The file also includes some relevant tags which can be used to create [smart folders](https://support.apple.com/guide/mac-help/tag-files-and-folders-mchlp15236/mac). ## Frequently Asked Questions {#faq} ### Why does the app require Apple silicon for Macs? The AI model is optimized for Apple silicon. It would be unusably slow on Intel Macs. ### Can you support iOS? No. iOS devices don’t have enough RAM. ### What are the usage restrictions for the generated images? You can use the images for commercial or non-commercial purposes, but you must follow the usage restrictions defined for [FLUX.2](https://huggingface.co/black-forest-labs/FLUX.2-klein-4B). These include not using the images for illegal activities, deception or misinformation, harassment, discrimination, exploitation or abuse, misuse of personal data, non-consensual imagery, or other harmful uses. ### Can you support custom models? I don’t plan to support this. This app is intentionally simple. There are many other apps that support custom models. ### Can you support inpainting/outpainting? I don’t plan to support this. ### Why can it not generate adult images? The app would not be allowed on the App Store if it allowed creating such images. ### Why does it take so long to generate? Several factors can affect the speed of image generation, including the performance of your device and the amount of available memory and CPU. Try closing down other apps or restarting your device before generating images. And bear in mind that the initial generation after installing the app may take longer due to model validation. ### Why does the app take up so much space on disk and memory? The AI model used to generate images is large. This is reasonable given the model’s capabilities. ### How can I remove Imago and the Flux model entirely? {#uninstall} First, open the app and click “Show Model Folder” in the settings to reveal the model in Finder, then delete that folder (~20 GB). After that, [delete the app](https://support.apple.com/en-us/102610) from your Applications folder as usual. ## Non-App Store Version A special version for users that cannot access the App Store. It won’t receive automatic updates. I will update it here once a year. [Download](https://www.dropbox.com/scl/fi/3vgrzu42y0b8ex4ucer9w/Imago-1.0.1-1774386003.zip?rlkey=6m80smt12qv8dccxlb4uk8sfw&raw=1) *(1.0.1)* *Requires macOS 26 or later* --- # DS_Store Inspector Inspect .DS_Store files. URL: https://sindresorhus.com/ds-store-inspector A read-only viewer for Finder metadata stored in [`.DS_Store`](https://en.wikipedia.org/wiki/.DS_Store) files. `.DS_Store` (Desktop Services Store) files are hidden files macOS creates in every folder you open in Finder. They store folder-specific view preferences like icon positions, window size, and sorting options. ## Frequently Asked Questions {#faq} ### Why would I want to inspect a `.DS_Store` file? To understand and debug how Finder presents a folder: sorting, view mode, window size, icon positions, and other hidden state. This is especially useful when investigating odd Finder behavior, auditing metadata left behind in shared folders, repositories, ZIP archives, installers, and designed DMGs, where the `.DS_Store` controls the exact visual layout users see (icon placement, background, window geometry). ### Can I use this to clean or reset Finder settings? No. This app is an inspector, not a cleaner. Use it to understand what is stored, then decide separately how to handle it. ### Why does a .DS_Store file look empty or show little data? Some folders barely have custom Finder settings, so there’s not much stored. Also, certain records only appear after you change view options (icon positions, sort order, window size, etc). ### Why are some record types cryptic? The format is undocumented. Many record types were reverse-engineered, and some Finder internals still use opaque identifiers. If you [send me](https://sindresorhus.com/feedback?product=DS_Store%20Inspector&referrer=Website-FAQ) the `.DS_Store` file, I will take a look. Click the button in the “Help” menu in the app. ### Why does it require macOS 26 or later? This is just a small, free project I built for fun. Supporting older macOS versions would mean extra testing, compatibility layers, and working around bugs Apple will never fix. Keeping it macOS 26+ lets me keep the code simple and spend time building things I enjoy instead of maintaining legacy support. ## Non-App Store Version A special version for users that cannot access the App Store. It won’t receive automatic updates. I will update it here once a year. [Download](https://www.dropbox.com/scl/fi/amjh96y5np88k35a29o91/DS_Store-Inspector-1.0.2-1770388348.zip?rlkey=laf8sa8yybe2v1i21oe9ps86d&raw=1) *(1.0.2)* *Requires macOS 26 or later* --- # Zone Bar World clocks in your menu bar. URL: https://sindresorhus.com/zone-bar Know what time it is for your team, friends, and family with a glance at your menu bar. Add clocks for any time zone, give them custom names and emoji, and see them at a glance. The time travel slider lets you check what time it will be hours from now across all clocks. Useful for planning meetings or checking if friends abroad are awake. Simple by design. No sync, no widgets, no iOS version. Just your clocks, always there when you need them. **Features** - **Menu Bar Display**\ Show clocks directly in your menu bar - **Time Travel**\ Slide to see what time it will be hours from now across all time zones - **Custom Labels**\ Name each clock (“Tokyo Office”, “Mom”) and add emoji icons - **Keyboard Shortcut**\ Toggle the window with a global shortcut - **Adjustable Text Size**\ Make it comfortable to read #### Privacy Your clocks never leave your device. The app is built without internet permissions (no network entitlement), so macOS prevents it from connecting to the internet even if it wanted to. The time zone search uses Apple Maps through macOS. ## Tips - Right-click a time zone to see more info and copy. - The +1/−1 indicator shows when a time zone is in a different day. - Press Command+ when the time zone window is open to quickly add a new time zone. ## Frequently Asked Questions {#faq} ### The clocks look blurry or are not dimmed on my secondary display [See this answer](https://sindresorhus.com/apps/faq#menu-bar-secondary-display) ### Some world clocks are missing from the menu bar Probably same as the above. ### Can it show seconds? No. This is a glanceable menu bar app. Seconds clutter the UI and have real performance costs in menu bar updates. ### Can it show the UTC offset (e.g. UTC+8)? No. I want to keep it minimal. The focus is on name and time. You can right-click a time zone to see it. ### Does it work offline? Yes. Everything runs locally, except the time zone search. ### Does it handle summer / winter time (DST) correctly? Yes. It follows macOS time zone rules, including daylight saving, so times update automatically. Unless you pick a fixed time zone like UTC+2. ### I only see Chinese cities when adding a time zone. Where are London, San Francisco, etc.? This is a [macOS bug](https://github.com/feedback-assistant/reports/issues/462) when searching from China. You will have to pick a time zone manually using the `…` button. ### Can you add half hour steps to the Time Travel slider? No. It’s meant for quick, rough shifts. Smaller steps slow it down. If you need an exact offset, just adjust the minutes yourself. ### Does the app use CPU constantly to keep the time updated? {#cpu} No. It updates once per minute. Negligible. ### Does it show AM/PM or 24-hour time? It follows your macOS system time format. You can change it in “System Settings › General › Date & Time”. ### Can it show analog clocks? No. Digital only. ### Can you reduce the space between menu bar clocks? The spacing is controlled by the system, but you could use [Menu Bar Spacing](https://sindresorhus.com/menu-bar-spacing) to change it for all items. ### Can you add sync? No. iCloud sync is unreliable and causes a huge support burden. It’s not worth the effort for this app. ### Can you add widgets? No. This is a simple menu bar app. ### Can you support iOS? No. ### Can you add another menu bar icon option? Sure! Find an icon you like in the [SF Symbols app](https://developer.apple.com/sf-symbols/) or [here](https://thenounproject.com/icons/), and send me the name or a link. ### I already own Dato. Does this offer any benefits over its similar feature? {#dato} Compared to the similar feature in [Dato](https://sindresorhus.com/dato): - More minimal - Flag or emoji icons - Custom text size --- # Menu Drop Quick AirDrop sharing in your menu bar. URL: https://sindresorhus.com/menu-drop AirDrop files, folders, links, and text simply by dragging them onto the app’s menu bar icon. You can also share files or text directly from your clipboard or use the built-in file picker, both with customizable keyboard shortcuts. Rich text content is converted to plain text. Rich-text files are sent as files. *Requires macOS 26 or later* ## Tips - You can drag and drop a URL directly from the Safari address bar to the menu bar icon. - Select a URL and either drop it on the menu bar icon or copy it and use Share from Clipboard to open it on your iOS device. #### Privacy The app is built without internet permissions (no network entitlement), so macOS prevents it from connecting to the internet even if it wanted to. ## Frequently Asked Questions {#faq} ### Dragging onto the menu bar icon opens Mission Control on macOS 27 macOS 27 opens Mission Control when you hold a dragged item near the top of the screen for a moment. Apps cannot prevent this. Release the item as soon as the pointer reaches the menu bar icon. If Mission Control has already opened, release the item anyway and press Escape to close Mission Control. The AirDrop picker is behind it. You can also use “Share From › Files” or “Share From › Clipboard” in the menu instead. ### Can it send directly to a specific device without showing the picker? No. Apple doesn’t expose any way to preselect an AirDrop target. You must choose a device in the AirDrop picker. ### Why doesn’t my iPhone/iPad/Mac show up as a target? AirDrop device discovery is up to the system. Ensure AirDrop is enabled, both devices are unlocked/awake, and are on compatible settings (Contacts Only/Everyone for 10 Minutes). ### AirDrop is not working This just triggers the AirDrop picker with the dragged files. It has no control over how AirDrop works. ### Why use this instead of AirDrop in the Share popover? Speed. Drag straight to the menu bar. ### Can you add a menu item or keyboard shortcut to share the current Finder selection with AirDrop? No. App Store limits (sandboxing) prevent the app from knowing what you’ve selected in Finder. My [Supercharge](https://sindresorhus.com/supercharge) app has a [Finder context menu item](https://www.dropbox.com/scl/fi/gc760wtbraxtgtq3gsrd3/AirDrop-Finder-context-menu-item-Screen-Shot-2025-11-19-at-00.23.31-1763486630.png?rlkey=4qleot753u1cc8xzez26afj0x&raw=1) to send selected files directly to AirDrop. ## Older Versions - [0.9.0](https://www.dropbox.com/scl/fi/lpb25nc13acyvup0px1rz/Menu-Drop-0.9.0-macOS-15-1760766492.zip?rlkey=yavo3yew2387xmehp69m6wo3m&raw=1) for macOS 15+ ## Non-App Store Version A special macOS version for users that cannot access the App Store. It won’t receive automatic updates. I will update it here once a year. [Download](https://www.dropbox.com/scl/fi/2f4gtf7nau0rhrthxwmpl/Menu-Drop-1.0.1-1760766251.zip?rlkey=wedsedjf0v97dpw034by2vtbw&raw=1) *(1.0.1 · macOS 26+)* --- # Short Run Run shortcuts from your menu bar. URL: https://sindresorhus.com/short-run Run your shortcuts from the menu bar, without opening the [Shortcuts](https://support.apple.com/guide/shortcuts-mac/intro-to-shortcuts-apdf22b0444c/mac) app. Since shortcuts can open URLs, folders, apps, and run shell scripts or AppleScript, you can put virtually any action in your menu bar. **Features** - Instant Access – All your favorite shortcuts available from the menu bar - Smart Organization – Organize shortcuts into sections and submenus - App-Specific Shortcuts – Show different shortcuts based on the active app - Linked Folders – Display folders from the Shortcuts app dynamically - Keyboard Shortcut – Toggle the menu with a customizable hotkey - Quick Keys – Assign 1-9 and a-z keys to shortcuts for instant triggering when menu is open - Customizable Menu Bar Icon – Choose between multiple menu bar icons to match your style - Launch at Login – Always ready when you need it #### Common use cases - Essential Folders – Instantly jump to Desktop, Downloads, current project, or that deeply nested work directory - Daily Websites – One-click access to X, Gmail, GitHub, or your company dashboard - File Management – Bulk rename photos, compress for email, convert between formats, organize screenshots - System Shortcuts – Toggle Dark Mode, empty trash, force-quit apps - Developer Workflows – Open terminal here, restart local server, run build scripts, push to Git - Text & Clipboard – Create meeting summary, clean text - Quick Actions – Take annotated screenshots, start screen recording, set focus modes, create calendar events #### URL scheme {#url-scheme} Supports the `shortrun://` URL scheme for running shortcuts silently in the background without opening the Shortcuts app. Works exactly like the standard [Shortcuts URL scheme](https://support.apple.com/en-ke/guide/shortcuts-mac/apd624386f42/mac) `shortcuts://` but executes silently. Perfect for automation workflows and third-party integrations. Examples: - `shortrun://run-shortcut?name=My%20Shortcut` - `shortrun://run-shortcut?name=My%20Shortcut&input=text&text=Hello` *It does not support `shortcuts://x-callback-url`.* #### Privacy Your shortcuts and data never leave your device. The app is built without internet permissions (no network entitlement), so macOS prevents it from connecting to the internet even if it wanted to. #### Example shortcuts - [Open a folder](https://www.icloud.com/shortcuts/29925fe3ff684d0699c82e51f6e86e2f) - [Open a URL](https://www.icloud.com/shortcuts/403bc58451f442e4b94fb4e13043abf1) ## Tips - Option-click a shortcut in the menu to edit it. - Use Command+Z to undo changes in the shortcut organizer. ## Frequently Asked Questions {#faq} ### How is this different from the built-in Shortcuts menu bar item? {#difference-builtin} The built-in menu bar item shows shortcuts in one long, unorganized list. Short Run benefits: - Choose the order of shortcuts - Organize shortcuts into sections and submenus - Show some shortcuts only when a specific app is active - Assign quick keys (1-9, a-z) to shortcuts for instant triggering when menu is open - Cleaner interface with just the shortcut name - Menu closes automatically when running a shortcut - Open the menu with a keyboard shortcut and navigate to shortcuts using arrow keys - Customizable menu bar icon and menu width - [URL scheme](https://sindresorhus.com/short-run#url-scheme) to run shortcuts silently in the background, perfect for automation workflows ### How do I disable the built-in Shortcuts menu bar item to avoid duplication? Open the Shortcuts app, select “Menu Bar” in the sidebar, select all shortcuts, right-click on them, and select “Remove from Menu Bar”. ### I already own Supercharge. Does this offer any benefits over its similar feature? {#supercharge} Compared to the similar feature in [Supercharge](https://sindresorhus.com/supercharge): - Group shortcuts into sections and submenus. - More focused since there are only shortcuts in the menu. - Global keyboard shortcuts to open the menu, create a new shortcut, and to open the Shortcuts app. - [URL scheme](https://sindresorhus.com/short-run#url-scheme) for running shortcuts silently in the background. ### What’s the difference between sections and submenus? Sections display shortcuts inline with a header (like “Development” followed by your dev shortcuts). Submenus create a separate menu that opens when you hover over the folder name. You can toggle between these modes for each folder. ### How do I make a folder show inline as a section? Right-click a folder when organizing and enable “Show Inline”. ### How can I select Safari web apps for app-specific shortcuts? {#safari-web-apps} Safari web apps (created via “File › Add to Dock” in Safari) are just normal apps. In the app picker, click the `+` button, navigate to `~/Applications`, and select the web app. They don’t appear by default because Short Run cannot automatically access this folder. ### Will you add icon support for menu items? No. While macOS 26 introduces icons in menu items (similar to iOS), I believe this creates visual noise rather than improving usability. Short Run intentionally maintains a clean, text-only interface to keep the menu focused and distraction-free. ### Can you add search? This is not planned. For searching, use Spotlight on macOS 26 or later, or Raycast or Alfred on earlier versions. ### Do I need to recreate my shortcuts? No. The app uses your existing shortcuts from the Shortcuts app. You’re just organizing how they appear in the menu bar. ### How do app-specific shortcuts work? You can set certain shortcuts to only appear when specific apps are active. For example, show your Git shortcuts only when Xcode is open, or media processing shortcuts only when Final Cut Pro is active. ### Can I use keyboard shortcuts to navigate the menu? Yes. Set a keyboard shortcut to open the menu, then use arrow keys to navigate and return to run shortcuts. Much faster than clicking. ### Can I pass arguments to a shortcut from the menu? No. Menu runs have no input. Design the shortcut to prompt, read the clipboard, or pull context itself. ### Why does running a shortcut sometimes add a “Stop and Output” action to it? The Shortcuts app automatically inserts a “Stop and Output” action when a shortcut doesn’t have a clear final output. This ensures the shortcut has something to return when executed, preventing execution errors. The action appears when shortcuts contain actions that don’t naturally produce output, like opening apps. This is not ideal, but it’s out of my control. This does not happen when running shortcuts from the built-in menu bar item. I have reported it to Apple: [FB19805797](https://github.com/feedback-assistant/reports/issues/703)\ *(Consider duplicating my report. The more duplicates, the more likely Apple will look into it.)* ### My shortcut fails when it needs “Full Disk Access” Give Short Run “Full Disk Access” too (“System Settings › Privacy & Security › Full Disk Access”). Short Run is what actually executes the shortcut, so it needs the same permission as the Shortcuts app. ### Can I assign hotkeys to individual shortcuts? No. Use Shortcuts’ own keyboard shortcuts (or Raycast/Alfred) if you want per-shortcut bindings. ### Can you add sync? No. iCloud sync is unreliable and causes a huge support burden. It’s not worth the effort for this app. ### Can you add export/import for the shortcuts organization? Maybe at some point, but I want the app to be mature first, since it commits me to that exact format. For now, you can [export/import all app data](https://sindresorhus.com/apps/faq#export-settings). ### Can you support iOS? No, because there is no way to run shortcuts in the background on iOS. ### Can you add another menu bar icon option? Sure! Find an icon you like in the [SF Symbols app](https://developer.apple.com/sf-symbols/) or [here](https://thenounproject.com/icons/), and send me the name or a link. ## Older Versions - [1.3.3](https://www.dropbox.com/scl/fi/us3xw21fz9lr973bcxs3w/Short-Run-1.3.3-macOS-15-1774388916.zip?rlkey=4n102lqactolqj678aqtwncm8&raw=1) for macOS 15 These are free for everyone but they will not run on newer macOS versions. --- # Simple Color Palette Create, view, and edit color palettes. URL: https://sindresorhus.com/simple-color-palette View, create, and edit color palettes in the [Simple Color Palette](https://github.com/simple-color-palette) format. The app also provides Quick Look preview and thumbnails for such files. A color palette is a collection of colors with optional names, essential for designers to maintain consistent branding, create cohesive user interfaces, and share color schemes across projects and teams. **This is the official app for creating palettes in the Simple Color Palette format. It’s intentionally minimal. It’s not a palette organizer or palette generator.** **Features** - Create and edit color palettes in the Simple Color Palette format (`.color-palette`) - Import Adobe Swatch Exchange (`.ase`) and Color List (`.clr`) files - Support for [wide gamut colors](https://css-tricks.com/the-expanding-gamut-of-color-on-the-web/) - Copy colors in multiple formats: RGB, OKLCH, and Hex - Quick Look preview and thumbnails for color palette files - Drag and drop support for adding colors and palettes - Optional color names for better organization - Support for opacity in colors - iCloud sync (by storing in iCloud Drive) - Shortcuts app integration - Native app ## Tips - macOS: Drag and drop an Adobe Swatch Exchange (.ase) or Color List (.clr) file onto the Dock icon to convert it to a Simple Color Palette format. You can also right-click the file in Finder and open with the app. - macOS: Use "File › Import Palettes…" to import one or more Adobe Swatch Exchange (.ase) or Color List (.clr) files, converting each to a new Simple Color Palette file. - macOS: Drop an Adobe Swatch Exchange (.ase) or Color List (.clr) file onto the palette window to merge its colors directly into the current palette. - iOS: Tap an Adobe Swatch Exchange (.ase) or Color List (.clr) file in the file picker in the app to convert it to Simple Color Palette format. - macOS: Drop a `.color-palette` file onto the window to add the colors from the dragged palette into the current palette. ## Frequently Asked Questions {#faq} ### Is this a palette organizer app? No. This app is specifically designed for creating and editing color palettes in the Simple Color Palette format. For organizing collections of palettes, use Finder, your preferred file management app, or a dedicated palette organizer app. ### Why doesn’t the app show color values in Hex format by default? The app supports extended sRGB colors (wide gamut) with values outside the 0-255 range. For example, `-97 197 261`. Hex notation (`#ff69b4`) is limited to standard RGB values and cannot properly represent extended color values. You can optionally enable showing colors in Hex format, but it won’t be shown for wide gamut colors. ### How can I export palettes to other formats like Adobe Swatch Exchange (ASE)? The app is focused on the [Simple Color Palette](https://simplecolorpalette.com) format. It doesn’t support exporting to other formats. ### What’s the benefit of the Simple Color Palette format over Adobe Swatch Exchange (ASE)? The Simple Color Palette format is an open JSON-based format that supports wide gamut colors and isn’t tied to any specific ecosystem. Unlike ASE, which is a proprietary binary format limited to Adobe products, Simple Color Palette is human-readable, platform-independent, and designed for modern color management needs with support for extended color gamuts. ### How can I generate a palette? {#generate-palette} The app is not a palette generator app. You can make palettes with existing colors or colors you choose, but it won’t generate nice palettes automatically. You can use a palette generator tool like [Coolors.co](https://coolors.co), download the palette as ASE, and import it into the app. You can also use my [ChatGPT bot](https://chatgpt.com/g/g-682c8d11e9988191bcc0f2c54cd1fb71-simple-color-palette-generator) to generate palettes with AI. ### How can I edit a color? Right-click (macOS) or long-tap (iOS) a color to edit. ### How can I change the order of colors? Drag and drop the color to move it to a different position. ### How can I copy a color’s value? Right-click (macOS) or long-tap (iOS) a color to copy its value. ### How can I drag and drop colors between palettes? Because of a macOS/iOS bug, this is not currently possible. ### How can I sync palettes between devices? You can save the palettes to iCloud Drive or any file sharing method. The palettes are just files. ### How do I import colors from other apps? You can paste or drop colors from other apps. ### Why do the color values shown in the app differ from those in the file? The app shows display RGB values (gamma-corrected) for easier understanding, while the file stores linear RGB values for technical precision. Both represent exactly the same color, just expressed in different formats. ### Does it support OKLCH? You can copy colors as OKLCH. Adding color in OKLCH format is planned. ### What is OKLCH? [Learn more.](https://evilmartians.com/chronicles/oklch-in-css-why-quit-rgb-hsl) ### Does it support showing and copying the color as HSL? No. The app uses [OKLCH](https://evilmartians.com/chronicles/oklch-in-css-why-quit-rgb-hsl) instead, which better matches how humans perceive color differences and makes it easier to create visually harmonious color combinations. ### Does the app support color spaces other than sRGB? The Simple Color Palette format stores colors in linear sRGB, which can be converted losslessly to any other RGB color space while supporting extended range values for wide gamut colors. ### How can I make the window always stay on top on macOS? Click the “Stay on Top” toggle in the “Window” menu. ### Can I use the palettes in my own apps? Yes. The format is [open source](https://github.com/simple-color-palette/spec) and has a [Swift implementation](https://github.com/simple-color-palette/SimpleColorPaletteSwift) available. ### How can I compare two palettes side by side? Just open both palettes and move the windows next to each other. ### Does it support gradients? No, only flat colors are supported. ## Older Versions - [1.2.0](https://www.dropbox.com/scl/fi/pn0p37paa3no0izdnmo0g/Simple-Color-Palette-1.2.0-macOS-15-1772815829.zip?rlkey=lnt9co9xdb2b9n6bn9rao9pux&raw=1) for macOS 15+ ## Non-App Store Version A special version for users that cannot access the App Store. It won’t receive automatic updates. I will update it here once a year. [Download](https://www.dropbox.com/scl/fi/bbpfawkllfq81gw2xvksl/Simple-Color-Palette-1.3.1-1775986497.zip?rlkey=di7lacf9mdqhozck8tl37am9m&raw=1) *(1.3.1)* *Requires macOS 26 or later* --- # Text Lens Copy unselectable text on screen. URL: https://sindresorhus.com/text-lens Copy the text you cannot select, in images, videos, PDFs, presentations, or anywhere on your screen. Select an area, and get text you can paste and edit. **Features** - Extract text from anywhere on your screen - Scan QR codes and barcodes - Capture by simply clicking the menu bar icon - Works completely offline - Global keyboard shortcut to activate capture - Extract text from images on clipboard or files - Extract text directly from photo taken with iPhone/iPad camera - Drag and drop images onto menu bar icon to extract text - Preserves tables (as tab-separated values) - Optionally shows captured text in a window with the ability to edit - Enables doing multiple captures and copy as a single text - [Privacy focused](https://sindresorhus.com/text-lens#privacy) #### Supported languages - English - French - Italian - German - Spanish - Portuguese - Chinese, Simplified - Chinese, Traditional - Cantonese, Simplified - Cantonese, Traditional - Korean - Japanese - Russian - Ukrainian - Thai - Vietnamese - Arabic - Arabic, Najdi - Turkish - Indonesian - Czech - Danish - Dutch - Norwegian Nynorsk - Norwegian Bokmål - Malay - Polish - Romanian - Swedish #### Privacy Everything is done locally on your device. Nothing leaves your device. The app is not even able to connect to the internet due to self-imposed restrictions that are enforced by macOS (no network entitlement). ## Tips ### General - When in capturing mode, simply click again to exit. You could also press Esc. - Right-click menu bar icon to capture. ### Capture and search the web You can set up a keyboard shortcut that captures text and immediately searches Google (or any service) with it: Add [this shortcut](https://www.icloud.com/shortcuts/8075578b214e48f9aa3c9b271c8084ae) to the Shortcuts app and then assign a keyboard shortcut to it in the Shortcuts app. You can adapt this to search any service (DuckDuckGo, Wikipedia, translate, etc.) by changing the URL. ### Captured text window When you set the “After Capture” setting to “Show in Window” (or “Copy and Show in Window”), captured text is shown in a floating window where you can view and edit it. This is also useful for consolidating multiple captures into a single text. - If you start a new capture while the window is visible (the window is temporarily hidden while you capture), the new text will be appended to the existing one. - Copy the whole text with Command+Shift+C. - Clicking the close button or pressing Esc will discard the text. ## Frequently Asked Questions {#faq} ### Why does the app require screen recording permission? macOS requires screen recording permission for any app that reads pixels from the screen. The app needs this to extract text from the areas you manually select. It only captures those specific regions — never your entire screen, never continuously. Nothing ever leaves your device. The app has no network access and cannot connect to the internet. ### Why do I keep seeing screen recording permission reminders? {#screen-recording-reminders} This is a macOS 15 bug. Apple added a system that occasionally reminds you which apps have screen recording access. It’s supposed to appear every 90 days, but some users see it constantly due to a bug in macOS 15.3 and later. This affects many apps, not just this app. Workaround: - Open the Terminal app. - Run this command: ```sh defaults write ~/Library/Group\ Containers/group.com.apple.replayd/ScreenCaptureApprovals.plist com.sindresorhus.Text-Lens -dict-add kScreenCapturePrivacyHintPolicy 7776000 kScreenCapturePrivacyHintDate -date 2035-12-31; /usr/bin/killall -HUP replayd ``` ### Why does capturing from some apps give me nothing? {#capture-protection} Some apps block screen capture at the system level, for example DRM-protected video and Citrix Workspace. macOS then returns a blank image instead of their content, so there is no text to extract. This affects everything on macOS, including the built-in screenshot tool, and cannot be worked around by any app. ### How is this different from macOS built-in Live Text? While macOS Live Text works well for images and photos in supported apps, Text Lens works everywhere on your screen. You can capture text from videos, webpages, presentations, or any app, even when Live Text is not available. Text Lens also works with non-image content like UI elements and rendered text that Live Text can’t detect. ### Can I use the app offline? Yes. Text recognition runs locally on your Mac. No internet connection is required. ### Can I capture text in multiple languages at once? Yes. The app can extract text in different languages simultaneously from the same capture. For example, you can capture a region containing both English and Chinese text, and both will be recognized correctly. The language setting is simply a hint to improve the recognition. ### Does the app preserve text formatting when copying? No, only plain text is captured. Formatting like italics, bold, or underlines is not preserved when copying text. ### Can you add support for more languages? {#add-language} The app uses macOS’s text recognition system, so language support is determined by your operating system. ### Can you improve the text detection quality? {#quality} The app uses macOS’s text recognition engine, so detection quality is determined by your operating system. Since this is handled by macOS, I cannot modify or improve it. ### I already own Supercharge. Does this offer any benefits over its similar feature? {#supercharge} Compared to the similar feature in [Supercharge](https://sindresorhus.com/supercharge): - Capture by simply clicking the menu bar icon - Extract text from images on clipboard or files - Extract text directly from photo taken with iPhone/iPad camera - Drag and drop images onto menu bar icon to extract text - Optionally shows captured text in a window with the ability to edit - Enables doing multiple captures and copy as a single text ### How does this compare to TextSniper? {#textsniper} This app’s advantages: - Universal capture: Extract text, QR codes, and barcodes with a single action - Capture by simply clicking the menu bar icon - Extract text from clipboard and files - Drag and drop images onto the menu bar icon to extract text - Can show captured text in a window with the ability to edit - Enables doing multiple captures and copy as a single text - Choice of menu bar icon - Cheaper TextSniper advantages: - Text-to-speech - More keyboard shortcuts ## Older Versions - [1.2.0](https://www.dropbox.com/scl/fi/fl9johm8g2xpnkwb2476z/Text-Lens-1.2.0-macOS-15-1774364288.zip?rlkey=mz0uyd26aimispnl21uqaix32&raw=1) for macOS 15 These are free for everyone but they will not run on newer macOS versions. --- # Googly Eyes Watchful eyes in your menu bar. URL: https://sindresorhus.com/googly-eyes Add playful eyes to your menu bar that follow your cursor and blink when you click. Pure whimsy! 👀 ## Frequently Asked Questions {#faq} ### Why is it using a lot of CPU? The app is optimized as much as possible, but macOS is inefficient at updating menu bar items. Also, make sure you know how to [interpret CPU usage](https://sindresorhus.com/apps/faq#high-cpu). ### Does it support multiple screens? Partly. The eyes follow your cursor across displays. However, menu bar items on inactive secondary displays are just static macOS clones, so those eyes cannot track independently. The real eyes live on the display with the active menu bar. macOS only makes another display active when you click something on it, for example a window or the desktop. Moving the pointer there is not enough. So when you move the pointer to another display, the eyes there stay frozen until you click on that display. This is a macOS limitation and cannot be worked around. There is no supported way for an app to change which display has the active menu bar. ## Older Versions - [1.1.4](https://www.dropbox.com/scl/fi/p4ym425ivfp4ex1enlh1l/Googly-Eyes-1.1.4-macOS-15-1774281617.zip?rlkey=7jbf2llhjjielpvde6rcpvp8n&raw=1) for macOS 15+ ## Non-App Store Version A special version for users that cannot access the App Store. It won’t receive automatic updates. I will update it here once a year. [Download](https://www.dropbox.com/scl/fi/t8qoulw2nfo2wbzoekbop/Googly-Eyes-1.2.0-1774281367.zip?rlkey=purr5ntc70na53ndpt06oxcuh&raw=1) *(1.2.0 · macOS 26+)* --- # Shortcutie Power up the Shortcuts app on Mac. URL: https://sindresorhus.com/shortcutie Adds 70+ actions to the Shortcuts app on Mac, for things the App Store does not allow, like changing the default browser without a prompt. While my free [Actions](https://sindresorhus.com/actions) app provides useful functionality for the Shortcuts app through the App Store for macOS, iOS and visionOS, Shortcutie is a Mac-only app that offers more powerful system-level features by operating outside of Apple’s restrictions. This enables capabilities like changing the system default browser or mail app (without a prompt), getting the active browser tab, clearing notifications, etc. These are things that wouldn’t be possible under App Store rules. > [!IMPORTANT] > Restart your device if the actions do not show up in the Shortcuts app. [Learn more ›](https://sindresorhus.com/shortcutie#troubleshooting) #### Included actions - Get Active Browser Tab : Gets the URL and title of the active browser tab :: Supports Safari, Chrome, Edge, Brave, Opera, Vivaldi, Arc, Orion, Atlas, and any Chromium-based browser. Firefox and Firefox-based browsers (including Zen) are not supported as they do not implement the required [AppleScript interface](https://bugzilla.mozilla.org/show_bug.cgi?id=125419) for getting tab info. - Run JavaScript on Active Browser Tab : Runs JavaScript code on the active browser tab and returns JSON :: Supports the same browsers as “Get Active Browser Tab”, except ChatGPT Atlas. - Open URLs in Private Browser Window : Opens URLs in a private/incognito browser window :: Supports Safari, Chrome, Edge, Brave, Opera, Vivaldi, Arc, Orion, Firefox, Zen, and any Chromium-based and Firefox-based browser. Not DuckDuckGo and ChatGPT Atlas. - Get Active Browser : Gets the frontmost app if it’s a browser - Get Selected Text : Gets the selected text in the currently focused window - Get/Set Current Folder in Finder : Gets or sets the currently viewed folder in Finder - Get Document of App : Returns the file of the currently active document in the active or specified app :: Works with native macOS apps like Preview, TextEdit, Pages, Keynote, Numbers, and other document-based apps. - Get File from Path : Converts a text path to a file or folder object for use in other Shortcuts actions :: Accepts both absolute paths (like “/Users/username/Documents/file.txt”) and paths with “~” (like “~/Documents/file.txt”). Returns a reference to the actual file on disk. - Show Alert (Extended) : Shows an alert dialog with multiple buttons and returns which button was clicked :: Timeout, custom icon, and up to 8 buttons. [Screenshot.](https://www.dropbox.com/scl/fi/439bkpixjwssiss0ye7ln/Screen-Shot-2025-05-20-at-18.43.32-1747756364.png?rlkey=jrq1etjed15uz66tpanokw0q6&raw=1) - Join Wi-Fi - Clear Top Notification : Clears the top visible system notification - Clear Notifications : Clears all system notifications - Click Top Notification : Activates the top visible system notification - Get/Set Default Browser : View or change the system default web browser - Get/Set Default Mail App : View or change the system default mail app - Get/Set Appearance (Extended) : View or change the system appearance mode (Light, Dark, or Auto) :: Unlike the native action, this also supports Auto mode. - Get/Set Icon & Widget Style : View or change how app icons and widgets appear :: Choose default, dark, clear, or tinted. - Get/Set Liquid Glass Style : View or change the Liquid Glass style :: Controls whether the glass effect used throughout macOS appears clear or tinted. - Press Keyboard Shortcut : Simulates pressing a keyboard shortcut :: Optionally target a specific app. - Trigger Menu Bar Item : Executes a menu bar item in the frontmost or specified app :: Accepts menu paths like “File > Save As”. - Get Menu Bar Item : Gets info about a menu bar item in the selected app :: Returns title, enabled state, checked state, and keyboard shortcut. - Trigger Context Menu Item : Executes a context menu item at the current mouse pointer position :: Using this you can trigger context-menu items or sub-items for the current mouse pointer position in any app. - Set Grayscale Mode : Makes screen display in black and white - Is Screen Being Watched : Detects if the screen is being recorded, mirrored, or shared (Zoom, Teams, etc) - Get/Set Display Resolution : View or change the resolution of a selected display :: Defaults to the primary display. Uses the resolutions available in System Settings, including scaled Retina resolutions. - Find Display : Returns the connected displays - Stash Text : Shows the given text in a floating window :: Multiple calls add items to the sidebar list. Intended for temporary viewing, not long-term storage. [Screenshot](https://www.dropbox.com/scl/fi/9oz7tnd24fohgasuuv6gd/Stash-Text-Screen-Shot-2026-02-01-at-23.17.36-1769962685.png?rlkey=9vd0p1c2zat89yrqssv8rhfnw&raw=1) - Find Listening Port : Finds TCP ports that currently have a listening process on this Mac :: Useful for checking whether a local dev server is running, finding which process is using a specific port, and inspecting listeners before stopping them. - Is Port Listening : Checks whether a specific TCP port currently has a listening process - Kill Process : Stops a process by process ID, process name, port number, or listening port :: Supports dry-run mode (find matches without signaling). By default, no-match is treated as success for friendlier automations, with an option to fail when no matches are found. - Open App (Extended) : Options to pass in URLs, activate, force new instance, hide, launch arguments, and environment variables - Close All Windows of App : Closes all windows of the specified app - Unminimize Windows of Active App : Unminimizes all windows or the first window of the currently active app - Isolate Window : Hide all other apps and minimize all other windows of the current app, leaving only the frontmost window visible :: It’s like a turbocharged “Hide Others” — also minimizes your extra windows in the current app, so you see just the one you care about. Perfect for quickly clearing away distractions when you have many windows open. - Get/Set Accent Color : View or change the system accent color :: Also includes special iMac and MacBook Neo colors normally only accessible on these Macs. - Toggle Dock Folder : Expands or collapses a [folder in the Dock](https://support.apple.com/kk-kz/guide/mac-help/mchl231f08fb/mac), similar to manually clicking on it :: Tip: Add this to a shortcut and give it a keyboard shortcut to expand or collapse Dock folders from the keyboard. - Get/Set Default Audio Device : View or change the default audio input (microphone) or output (speaker) - Get Details of Audio Device : Returns comprehensive information about audio devices :: Includes volume, mute state, type, connection status, sample rates, manufacturer info, and more. - Find Audio Device : Returns all audio devices :: Includes comprehensive details about them. - Get/Set Audio Device Mute State : Control mute state of audio devices - Get/Set Audio Device Volume : Control volume level of audio devices - Set Folder Color : Change the color of folders - Hide All Windows : Instantly hides windows for all apps - Minimize All Windows : Minimizes all visible windows, with options to only affect the active app and exclude the frontmost window - Quit All Apps : Closes all running apps except menu bar apps :: Options to exclude apps, exclude frontmost app, and close Finder windows. - Get Night Shift : Returns whether Night Shift is currently enabled - Get True Tone : Returns whether True Tone is currently enabled - Eject All Disks : Safely unmounts all external drives (except excluded ones) - Create Email with Files : Creates a new email message in the default email app with the given files as attachments :: Works with Mail, Outlook, Spark, Mimestream, Airmail, Canary Mail, and maybe other apps. Not Thunderbird. - Empty Trash : Permanently deletes items in the trash - Toggle Show Desktop : Shows or hides the desktop by temporarily moving windows aside - Toggle Mission Control : Shows or hides [Mission Control](https://support.apple.com/guide/mac-help/view-open-windows-spaces-mission-control-mh35798/mac) - Toggle App Exposé : Shows or hides [App Exposé](https://www.oreilly.com/library/view/switching-to-the/9781449338978/ch04s11.html) - Toggle Launchpad : Shows or hides [Launchpad](https://support.apple.com/guide/mac-help/mh35840/mac) - Toggle Spotlight : Toggles Spotlight search, optionally navigating to a specific tab (like Clipboard History) - Get Latest Screenshots : Returns the most recent screenshots taken with the system screenshot tool - Get/Set Screenshot Format : View or change the file format used when saving screenshots :: Choose from PNG, JPG, TIFF, or HEIC. - Get/Set Screenshot Location : View or change the folder where screenshots are saved - Get/Set Dock Position : View or change the position of the Dock :: Changes take effect immediately. - Get/Set Dock Auto-Hide : View or change whether the Dock automatically hides and shows - Get/Set Dock Minimize Effect : View or change the animation used when minimizing windows :: Choose between Genie and Scale. - Get/Set Desktop Icons Visibility : Show, hide, or check visibility status of desktop icons - Get/Set Desktop Widgets Visibility : Show, hide, or check visibility status of desktop widgets - Get/Set Function Keys Mode : Toggle or check if F1-F12 keys operate as standard function keys or media keys - Get/Set Hot Corner : View or change the configuration for a system [hot corner](https://support.apple.com/guide/mac-help/mchlp3000/mac) - Get/Set Keyboard Brightness : View or change the keyboard backlight brightness level :: Only works on Macs with a built-in backlit keyboard. - Get/Set Night Shift Color Temperature : Control the [Night Shift](https://support.apple.com/en-us/102191) color temperature. - Get/Set Network Location : Switch between different [network configurations](https://support.apple.com/105129) :: Tip: Use Shortcuts automations to switch automatically on certain conditions. - Get/Set DNS Servers : View or change the DNS servers for a network interface :: Setting requires administrator authorization. - Get/Set iOS Notifications Enabled : Control whether notifications from your iOS device appear on your Mac :: Only works if your Mac supports notifications from iOS. - Click Mouse Button : Simulates a mouse click at the current mouse pointer position or a specific screen coordinate :: Supports left, right, or middle button; single, double, or triple click; and optional modifier key override. - Get/Set Mouse Position : Get the current mouse pointer position or move the mouse pointer to specific screen coordinates - Center Mouse Pointer : Centers the mouse pointer on the primary display - Get/Set Mouse Pointer Visibility : Get or set the visibility of the mouse pointer :: By default, it reappears on mouse movement. - Get/Set Natural Scrolling : View or change whether natural (trackpad-style) scrolling is enabled - Invert Selection in Finder : Inverts the current selection in Finder :: Deselects what’s currently selected and selects everything that wasn’t selected. Only works when Finder is the active app. - Create New Text File in Finder : Creates a new text file in the current Finder location :: The file will be created in the frontmost Finder window’s current location and will be ready for you to rename. - Toggle Hidden Files in Finder : Shows or hides hidden files in Finder :: Toggles the visibility of files that start with a dot (.) and other hidden system files. This is a temporary toggle that affects the current Finder session. The setting will revert when Finder is restarted. - Get/Set App Desktop Assignment : View or change which desktop an app is assigned to :: This mirrors the Dock “Assign To” context menu item. - Get Slack Workspace : Gets the name of the current Slack workspace - Clear Recent Lists : Clears recent items (files, apps, and servers) from menus - Open System Setting : Opens Hide My Email, Private Relay, VPN & Filters, or Apple Account Subscriptions settings directly - Get/Set Finder New Window Target : Gets or sets the default folder that opens when creating new Finder windows - Sleep Displays : Puts all displays to sleep immediately :: The Mac itself stays awake, only the displays go to sleep. - Switch Space : Switches to the next or previous Space without the macOS slide animation - Clear Clipboard : Clears all contents from the system clipboard - Get Apps Using Secure Input : Secure Input prevents other apps from reading keystrokes when typing passwords. Sometimes apps don’t properly disable it, causing keyboard shortcuts to stop working. This can find such apps. ## Tips {#tips} ### Sharing shortcuts that use Shortcutie Add a warning at the start of the shortcut to install the app if not installed. [Example](https://www.icloud.com/shortcuts/e31f8ce26d36405ca6d6aca0b2350d8f) ## Frequently Asked Questions {#faq} ### The actions don’t show up in the Shortcuts app {#troubleshooting} This is caused by a macOS bug. Some things you could try: 1. Restart your device. 1. Add [this shortcut](https://www.icloud.com/shortcuts/29943b986f934d9da5018853d4e2cc40), run it once, relaunch the Shortcuts app, and see if the actions show up in the Shortcuts app after that. 1. Change the device language to something else and back. 1. Remove the app, install it again, and restart your device. ### I get a “errorDomain error 2” error when running an action Same solution as above. ### Why is this not in the App Store? Much of the functionality would not be possible in the App Store because of [sandboxing](https://sindresorhus.com/apps/faq#macos-sandbox). ### Why is this paid when your Actions app is free? Unlike Actions, which uses public APIs, Shortcutie relies on many private APIs that require constant maintenance as macOS evolves. The app targets power users who value these advanced capabilities, and the pricing helps ensure sustainable development while keeping the support burden manageable. ### Can I have this installed together with the Actions app? Yes, they are complementary. ### Can you support iOS? No. The app relies on macOS-specific system features that aren’t available on iOS and requires capabilities outside of App Store restrictions. Check out [Actions](https://sindresorhus.com/actions) for iOS shortcuts functionality. ### Do I need to keep the app running for the actions to work? No, once installed, the app’s actions are always available to the Shortcuts app. ### I can already do some of these actions with AppleScript and the command-line, why use this app? Yes, but the app packages these capabilities into maintained, ready-to-use actions that integrate perfectly with Shortcuts. This lets you focus on building workflows instead of writing and maintaining scripts. ### How is the “Quit All Apps” action better than the built-in “Quit App” action? {#quit-all-apps-vs-builtin} The action can exclude the frontmost app and also close Finder windows. ### What’s up with the app icon? A bit of whimsy makes software more human and approachable. Even Apple uses a smiling Finder icon to this day. Good software can be both powerful and fun. And since the icon is only visible in the App Store and as a tiny icon in Shortcuts, its design has minimal impact on the actual utility of the app. ### Shortcutie and Supercharge seem to have some of the same actions for Shortcuts {#supercharge} There is [some overlap](https://sindresorhus.com/supercharge#shortcutie), but Shortcutie includes many more actions. Supercharge only includes actions for its own features. ## Older Versions - [1.5.0](https://www.dropbox.com/scl/fi/1nny73fqfa423v87vz0q6/Shortcutie-1.5.0-macOS-15-1770752068.zip?rlkey=3fxry52nv7nflmc60r4leqlfm&raw=1) for macOS 15 These are free for everyone but they will not run on newer macOS versions. --- # Default Browser Switch default browser from your menu bar. URL: https://sindresorhus.com/default-browser Change the system default browser from your menu bar or with a keyboard shortcut, or let your Focus mode or the Shortcuts app change it for you. Useful if you use one browser for work and another for everything else. Unlike similar apps, this one actually changes the system default browser (and without a prompt). **Features** - Set the system default browser - Choose which browsers are shown in the menu - Hide menu bar icon - Show the default browser’s icon in the menu bar - Keyboard shortcut to show the menu - [Shortcuts app integration](https://sindresorhus.com/default-browser#shortcuts) - [Focus Filter](https://sindresorhus.com/default-browser#focus-filter) to automatically switch browser based on [Focus mode](https://support.apple.com/guide/mac-help/mchl613dc43f/mac#mchl49b73d04) --- Mentions: - [Review in MacStories](https://www.macstories.net/reviews/default-browser-a-mac-menu-bar-utility-for-quickly-switching-browsers/) - [Lifehacker article](https://lifehacker.com/tech/finally-an-easier-way-to-change-your-default-browser-on-mac)
> [!TIP] > Switching the default browser is also a feature of my [Supercharge](https://sindresorhus.com/supercharge) app. --- ## Tips ### Browser selector Set a keyboard shortcut to open the menu. Once open, select a browser by pressing its number key or navigate using the arrow keys. ### Launch browser Hold the Option key and click a browser in the menu to open it, rather than setting it as the default. ### Switch to specific browser with keyboard shortcut {#keyboard-shortcut-set-browser} Create a [shortcut in the Shortcuts app](https://support.apple.com/guide/shortcuts-mac/intro-to-shortcuts-apdf22b0444c/mac) for each browser using the “Set Default Browser” action, then assign a keyboard shortcut to the shortcut. ### Automatically switch browser based on a trigger {#auto-switch-browser} The triggers could be: time of day, Wi-Fi network, Focus mode, etc. For example, set up automatic browser switching between work and personal use through the Shortcuts app. Create two shortcuts using the “Set Default Browser” action, one for each browser. Then use Shortcuts automations to run these shortcuts based on time of day or Wi-Fi network. The Wi-Fi trigger is particularly useful for office workers, as it switches browsers automatically when you connect to your work network. Use the [Focus Filter](https://sindresorhus.com/default-browser#focus-filter) to switch browser based on the active Focus mode. ## Frequently Asked Questions {#faq} ### The app does not show up in the menu bar [Try this](https://sindresorhus.com/apps/faq#app-not-showing-in-menu-bar) You may also have disabled the “Show menu bar icon” setting, which hides the menu bar icon. Launch the app again to show the menu bar icon. ### Can it support rules for which browser to use for certain URLs? {#rules-support} Features like rules require the app to intercept and forward URLs by acting as the default browser. This app simply changes the default browser. Check out my [Velja](https://sindresorhus.com/velja) app for rules and more. ### Can it support browser profiles? {#browser-profiles} Same answer as the above. With the exception of Orion, which implements profiles as separate apps. ### How is it different from your Velja app? [Velja](https://sindresorhus.com/velja) works by acting as a browser and forwarding URLs to other browsers, enabling features like rules, interactive browser prompt, desktop app handling, and URL tracking parameter cleaning. This app is simpler: it just changes the system default browser directly. ### I already own Supercharge. Does this offer any benefits over its browser switcher feature? {#supercharge} Compared to the browser switcher in [Supercharge](https://sindresorhus.com/supercharge): - Default browser app icon in the menu bar. - Larger app icons in the menu. - Keyboard shortcut to show the menu. - Number key selection for browsers in the menu. ### Why is this not in the App Store? Much of the functionality would not be possible in the App Store because of [sandboxing](https://sindresorhus.com/apps/faq#macos-sandbox). ### Can the default browser change based on the macOS desktop Space I’m in? {#macos-spaces} No. macOS does not expose the active [Space](https://support.apple.com/guide/mac-help/work-in-multiple-spaces-mh14112/mac) to apps, so the app cannot detect or react to it. You can instead automate switching with Focus Filters or Shortcuts (see [tips](https://sindresorhus.com/default-browser#tips)). ## Scripting ### Shortcuts The app comes with support for the Shortcuts app. Look up the app in the Shortcuts app to see what actions it provides. For example, you could use Shortcuts automations to switch to a certain browser at a [specific time of the day](https://sindresorhus.com/default-browser#auto-switch-browser), or maybe when joining a specific Wi-Fi network. ### Focus Filter The app includes a [Focus Filter](https://support.apple.com/guide/mac-help/mchl613dc43f/mac#mchl49b73d04) to automatically switch the default browser based on the Focus mode. Enable it in “System Settings › Focus”. Focus Filters are [broken on macOS 26.5 and later](https://developer.apple.com/forums/thread/826766) because of a macOS bug. ### Events The [distributed notification](https://sindresorhus.com/apps/faq#distributed-notifications) `com.sindresorhus.defaultBrowserDidChange` is emitted when the default browser is changed from the app or the Shortcuts action. ## Older Versions - [1.1.0](https://www.dropbox.com/scl/fi/u9c9gzh7l8jseuga9v2eg/Default-Browser-1.1.0-macOS-15-1771002988.zip?rlkey=37e8ck6g0x3pc3z132olqc8n9&raw=1) for macOS 15 These are free for everyone but they will not run on newer macOS versions. --- # App Buddy Helper for my apps. URL: https://sindresorhus.com/app-buddy Export and import the settings of [my apps](https://sindresorhus.com/apps) to back them up or move them to another Mac, reset their privacy permissions, and more. It’s a separate app because some features are not possible in sandboxed apps, which most of my apps are. I welcome suggestions for what more useful support tools it could contain. *I also have future plans to make this app provide extra functionality for my sandboxed apps.* ![Download count](https://img.shields.io/github/downloads/sindresorhus/app-buddy-meta/total?color=3e65d0) ## Frequently Asked Questions {#faq} ### Can it support apps other than yours? No. This is intended for my apps only. If you need app setting import/export for any apps, check out my [Supercharge](https://sindresorhus.com/supercharge) app. ### Why is this not in the App Store? Much of the functionality would not be possible in the App Store because of [sandboxing](https://sindresorhus.com/apps/faq#macos-sandbox). ## Older Versions - [1.2.1](https://www.dropbox.com/scl/fi/tffgghwhnido39kz4z32k/App-Buddy-1.2.1-macOS-15-1769050534.zip?rlkey=00isw08dwxyri87dt360gstwi&raw=1) for macOS 15+ --- # Supercharge Elevate your Mac experience. URL: https://sindresorhus.com/supercharge Cut and paste files in Finder, close apps in Mission Control, and make the green button fill the window. Dozens of small fixes, each off until you want it. Supercharge has fixes like these for Finder, the Dock, windows, and more. @Feature(title: "Cut and paste files in Finder") { Press Command+X and then Command+V to move files, like on Windows. Open files with Return, reopen a closed tab with ⇧⌘T, and create a new text file with Option+N. The right-click menu gets [actions like Copy Path, New From Template, and Open in Terminal](https://sindresorhus.com/supercharge#finder-context-menu). } @Feature(title: "Close windows from Mission Control") { Right-click a window in Mission Control to close it or quit its app, or press ⌘W, ⌘Q, ⌘H, or ⌘M on the window you point at. You do not have to leave Mission Control first. [Learn more.](https://sindresorhus.com/supercharge#mission-control-improvements) The green window button can [fill the screen](https://sindresorhus.com/supercharge#green-traffic-light-button-fill) instead of going fullscreen, and the yellow one can [hide the app](https://sindresorhus.com/supercharge#yellow-traffic-light-button-hide). } @Feature(title: "Click the Dock to hide apps") { Clicking the Dock icon of the active app does nothing by default. Make it [hide the app, minimize its windows, or cycle through them](https://sindresorhus.com/supercharge#dock-icon-click-behavior). Middle-click any running app to do the same, or to quit it. Hidden apps can get dimmed icons, the Dock can show without a delay, and you can add [spacers](https://sindresorhus.com/supercharge#dock-spacers) to group your apps. } **Features** - [Finder power-ups](https://sindresorhus.com/supercharge#finder-context-menu): Cut/paste files, new file, templates, open in terminal, inline share services, etc. - [Better window buttons](https://sindresorhus.com/supercharge#green-traffic-light-button-fill): Green fills instead of fullscreen, [yellow hides app](https://sindresorhus.com/supercharge#yellow-traffic-light-button-hide). - Notifications: Clear all or click with a shortcut. - Stop Music app from launching when you press Play/Pause. - [Auto-quit or hide inactive apps](https://sindresorhus.com/supercharge#auto-quit-apps): Keep focused by automatically managing distraction apps. - [Keyboard Shortcut Inspector](https://sindresorhus.com/supercharge#keyboard-shortcut-inspector): See which app owns a global hotkey. - Utility: [Keep Awake](https://sindresorhus.com/supercharge#keep-awake), Cleaning Mode, Cat Mode, auto-select AirDrop target. - [Capture text](https://sindresorhus.com/supercharge#capture-text) + [Translate anywhere](https://sindresorhus.com/supercharge#capture-translate-text): OCR and instant translate from any screen region. - [Scan QR & barcodes](https://sindresorhus.com/supercharge#scan-qr-codes): From screen or clipboard, multi-code aware. - [Isolate Window](https://sindresorhus.com/supercharge#isolate-window): One window, zero distractions. - Spotlight keyboard shortcuts: Open clipboard history directly. - Toggles: Dark Mode, Night Shift, etc. - Extras: Add Dock & Finder sidebar spacers, change default browser without prompts.
#### All Features [Finder](https://sindresorhus.com/supercharge#finder) · [Windows](https://sindresorhus.com/supercharge#windows) · [Dock](https://sindresorhus.com/supercharge#dock) · [Apps](https://sindresorhus.com/supercharge#apps) · [Keyboard](https://sindresorhus.com/supercharge#keyboard) · [Screen capture](https://sindresorhus.com/supercharge#screen-capture) · [Screenshots](https://sindresorhus.com/supercharge#screenshots) · [Audio](https://sindresorhus.com/supercharge#audio) · [Clipboard](https://sindresorhus.com/supercharge#clipboard) · [Utilities](https://sindresorhus.com/supercharge#utilities) · [Mouse and trackpad](https://sindresorhus.com/supercharge#mouse-and-trackpad) · [Menu bar](https://sindresorhus.com/supercharge#menu-bar) · [Notifications](https://sindresorhus.com/supercharge#notifications) · [AirDrop and sharing](https://sindresorhus.com/supercharge#airdrop) · [Files](https://sindresorhus.com/supercharge#files) · [Toggles](https://sindresorhus.com/supercharge#toggles) · [Apple apps](https://sindresorhus.com/supercharge#apple-apps) · [System](https://sindresorhus.com/supercharge#system) ##### Finder {#finder} - Move files by ^[cutting](note: "Without this feature, you have to first copy (Command+C) and then remember to move (Option+Command+V). The feature works by overriding the normal cut ⌘X keyboard shortcut when Finder is active and executes a copy ⌘C instead. When you then paste ⌘V, it executes the native move ⌥⌘V keyboard shortcut. So really, it’s Finder moving the files. This app just makes the keyboard shortcuts more intuitive. If you don’t paste, the files just stay in place. This feature also works with the Forklift app.") (Command+X) and pasting (Command+V) - Open files with Return (you can then rename with Shift+Return or F2) - Reopen last closed tab with ⇧⌘T :: Works for tabs closed with ⌘W. Similar to “Reopen Closed Tab” in browsers. - Create new text file with Option+N *([video](https://github.com/user-attachments/assets/cb2c4606-12eb-4915-a64c-9b8ac3e123cf))* or from the [context menu](https://sindresorhus.com/supercharge#finder-context-menu) :: Set default extension, auto-open after naming, and choose app. - Move files to the trash with ⌫ (Delete) instead of ⌘⌫ - Go back to the previous folder with ⌫ (Delete) :: This has a bonus feature of highlighting the folder you came from. - [Adds many useful actions to the context menu:](https://sindresorhus.com/supercharge#finder-context-menu) copy path, move to, open folder with, AirDrop, folder colors, etc. - Paste image or plain text as file with ⌘V :: When the clipboard contains an image or plain text, pressing ⌘V in Finder/Desktop creates a file in the current folder. Normally, this would do nothing as Finder can only paste files. macOS 27 has this built-in for images, but it pastes images as TIFF, which is generally not desirable. Supercharge pastes as PNG. - Middle-click sidebar items to open in a new tab - Auto-adjust column widths to filenames in column view, or do it once with a keyboard shortcut - Known (unfixable) issues: - Columns may not adjust correctly in synced folders due to sync status icons. - Columns may not expand fully if the Finder window is narrow. A workaround is to make the Finder window very wide. - **If you are buying Supercharge just for this feature. Please try out the [trial](https://sindresorhus.com/supercharge#trial) first.** - Invert selection (deselects what’s currently selected and selects everything that wasn’t selected) - Move or copy selected files with a keyboard shortcut :: Shows a system file dialog to choose where to move files. - Open new window when activating without windows :: By default, when you Command-Tab to Finder without any windows open, nothing happens. This ensures a new window opens automatically. - Make ⌘Q close all windows :: By default, ⌘Q does nothing in Finder. - Customize clicking Finder icon in Dock :: Choose what happens when you click the Finder icon in the Dock: System default behavior, open new window when already focused (first click focuses, subsequent clicks open new windows), or always open new window. - [Adds many useful services to “Services” in context menus (like in Finder):](https://sindresorhus.com/supercharge#macos-services) copy path, move to, AirDrop, etc. - Toggle Finder with a keyboard shortcut (aka. [visor mode](https://totalfinder.binaryage.com/visor)) - Add [Finder sidebar spacers](https://sindresorhus.com/supercharge#finder-sidebar-spacers) ##### Windows {#windows} - [Close & minimize windows and hide & quit apps directly from Mission Control](https://sindresorhus.com/supercharge#mission-control-improvements) - Unminimizes an app’s windows (all or one) when activated (e.g., via Command+Tab) - Hide all windows (aka. boss mode) - [Isolate window](https://sindresorhus.com/supercharge#isolate-window) - Prevent accidental ⌘W window closes :: Adds a safety layer to ⌘W so you don’t nuke the wrong window (perfect for Safari web apps and standalone sites). Pick your gesture: ⇧⌘W, press W twice while holding ⌘, or press-and-hold ⌘W with a visual timer. Works per-app with an inclusion filter, so you can guard only the apps that matter. - [Clicking green traffic light button fills window instead of entering fullscreen](https://sindresorhus.com/supercharge#green-traffic-light-button-fill) - [Clicking yellow traffic light button hides app instead of minimizing window](https://sindresorhus.com/supercharge#yellow-traffic-light-button-hide) - [Prevent accidental window closing for certain apps](https://sindresorhus.com/supercharge#prevent-accidental-window-closing) - Minimize all windows or just all except frontmost with keyboard shortcuts and from the menu. - Minimize all windows of the active app except frontmost with keyboard shortcuts and from the menu. - Unminimize all windows across all apps, or all/first window of active app, with keyboard shortcut and from the menu. - Show desktop (menu action) - Switch to next or previous Space without animation (keyboard shortcut) :: Instantly jumps to an adjacent Space without the macOS slide animation. - Show [poof animation](https://substack.techreflect.org/p/origin-on-macos-cloud-poof-animation) when closing a window by clicking the red traffic light button ##### Dock {#dock} - [Clicking an active app’s Dock icon hides the app, minimizes its windows, or cycles through its windows](https://sindresorhus.com/supercharge#dock-icon-click-behavior) - You can also middle-click any running app for the same actions, plus quit. - Prevent Dock from showing when moving the mouse pointer to screen edge :: Useful if you want to hide the Dock entirely or only show it with a keyboard shortcut. Does not apply to fullscreen. - Open new window by Shift+clicking a running app in the Dock :: Makes it easy to open a new window for an app, similar to Windows. Works by simulating Command+N in the app, so it may not work correctly in all apps. - (beta) - Launch alternative app when clicking Finder icon in the Dock (e.g., Bloom, QSpace, Path Finder). - Disable delay when showing Dock. :: Does not apply to fullscreen. - Dim icons of hidden apps in the Dock - [Clicking a Dock folder reveals it in Finder instead of showing its contents](https://sindresorhus.com/supercharge#dock-folder-click) - Add [Dock spacers](https://sindresorhus.com/supercharge#dock-spacers) ##### Apps {#apps} - [Automatically quit or hide apps after inactivity](https://sindresorhus.com/supercharge#auto-quit-apps) - Prevent ^[accidental app quits](note: "The Q key is next to W, making it easy to accidentally hit Command+Q (quit) when reaching for Command+W (close window).") by instead using ⇧⌘Q, pressing Q twice while holding ⌘, or [press and hold ⌘Q](https://github.com/user-attachments/assets/0515e50f-2a93-4369-836e-085ad462fdf8) - [Launch any app with a customizable global keyboard shortcut](https://github.com/user-attachments/assets/22bf135a-cc39-45ef-82ef-bf23176f0746) :: Pressing the shortcut again hides the app and activates the previous app, so it works as a quick toggle. - [Export/import (backup) settings for any apps](https://sindresorhus.com/supercharge#export-import-app-settings) - Toggle Terminal with a keyboard shortcut - [Offers to install apps from mounted DMG files](https://github.com/user-attachments/assets/5ecb9b0b-5719-4382-98a0-c3316bd20a6b) - Quit all apps (menu action and keyboard shortcut) :: Optionally exclude specific apps. - Quit all apps except frontmost (menu action and keyboard shortcut) :: Optionally exclude specific apps. - Reset [privacy permissions](https://support.apple.com/en-vn/guide/mac-help/mchl211c911f/mac) for any apps ##### Keyboard {#keyboard} - [Hyper key](https://sindresorhus.com/supercharge#hyper-key) - Trigger specific Spotlight tabs directly with keyboard shortcuts :: Jump straight to Apps, Shortcuts, Files, or Clipboard History in Spotlight with customizable keyboard shortcuts. - Play a sound when a specified keyboard shortcut is triggered :: Works for keyboard shortcuts handled by other apps, without changing how that shortcut behaves. Useful to add some fun sounds to your favorite keyboard shortcuts. - [Make brightness and volume key adjustments more precise with half and quarter-step increments](https://github.com/user-attachments/assets/e994755b-94ca-4e3c-8f70-5d3bffc3aed1) - Control keyboard brightness with customizable keyboard shortcuts :: Only supported for the built-in MacBook keyboard. - [Keyboard shortcut inspector](https://sindresorhus.com/supercharge#keyboard-shortcut-inspector) - Disable Command+Tab app switcher :: Useful to prevent accidental activation if you don’t use the app switcher. - Remove Caps Lock activation delay :: Makes Caps Lock respond instantly. ##### Screen capture {#screen-capture} - [Capture text from anywhere on screen](https://sindresorhus.com/supercharge#capture-text) - [Capture and translate text from anywhere on screen](https://sindresorhus.com/supercharge#capture-translate-text) - [Scan QR codes and barcodes from anywhere on screen](https://sindresorhus.com/supercharge#scan-qr-codes) - Pick color on screen and copy (menu action and keyboard shortcut) (Hex, RGB, OKLCH) ##### Screenshots {#screenshots} - Auto-copy screenshots to clipboard. :: Useful if you want screenshots saved and also instantly available to paste. Works with the built-in screenshot tool. - [Show markup tools by default in screenshot preview](https://github.com/user-attachments/assets/20b0cfe8-d588-4329-9132-9120b32da7ff) - Auto-open screenshot preview after capturing - Open the latest screenshot with a keyboard shortcut, from the menu, or using Shortcuts. :: Opens your most recent screenshot for markup, Quick Look, or in the app of your choice. Also includes a Shortcuts action to get the latest screenshots. - Show or hide mouse pointer in screenshots - Archive old screenshots automatically :: Keeps your screenshots folder tidy by moving old screenshots to a separate location. Works with third-party screenshot apps too. ##### Audio {#audio} - Prevent the Music app from auto-opening when you don’t want to. :: For example, when pressing Play/Pause on your keyboard or AirPods. You can also have it launch another app like Spotify instead. Similar to apps like noTunes and Overkill. - Send media keys to app :: Routes play/pause and next/previous track to Music, Podcasts, or Spotify. Useful when macOS keeps sending media keys to the wrong app. - Mute Quick Look video previews :: Automatically mutes videos previewed from Finder with Space while keeping the rest of your Mac audio unchanged. - Limit output volume after waking and unlocking :: Automatically lowers your Mac’s volume to a chosen maximum if it’s louder when you return. Never unmutes or raises volume. Prevents accidental loud audio after leaving your Mac idle. - [Show input devices in the Sound menu bar item menu](https://github.com/user-attachments/assets/e6015206-c927-4c97-8f66-7408231d4f23) :: By default, it only shows output devices. - Toggle mute sound :: Mute or unmute your Mac sound with a keyboard shortcut, from the menu, or using Shortcuts. - Toggle mute microphone :: Mute or unmute your microphone with a keyboard shortcut, from the menu, or using Shortcuts. Can show a menu bar icon for the current state. [Screenshot.](https://www.dropbox.com/scl/fi/dh8qprcekcjftnjc1hy2l/Mute-microphone-Screen-Shot-2025-07-31-at-19.16.08-1753983397.mp4?rlkey=i9c1ehd348v07g72t2ahpqcsz&raw=1) - Mute microphone while typing :: Automatically mutes the microphone input while you’re typing and unmutes shortly after you stop. Only activates when the microphone is in use. Useful for video calls with loud keyboards. Similar to the discontinued Unclack app. - Cycle audio output and input devices :: Switch the default sound output or input device to the next one with a keyboard shortcut or using Shortcuts, cycling back to the first at the end. Useful for quickly jumping between speakers, headphones, and microphones. Similar to the SoundSwitch app on Windows. - [Only show sound menu bar icon when either muted or unmuted](https://github.com/user-attachments/assets/10447e39-f288-406b-a504-6ab7b8fcf261) ##### Clipboard {#clipboard} - [Automatically clear clipboard for improved privacy](https://sindresorhus.com/supercharge#automatic-clipboard-clearing) - Clear clipboard *(menu action and keyboard shortcut)* - Disable [Universal Clipboard](https://support.apple.com/en-us/102430) without disabling [Handoff](https://support.apple.com/en-us/102426) :: Useful if clipboard syncing feels slow or annoying. ##### Utilities {#utilities} - Cleaning Mode :: Makes your screen black and disables keyboard and mouse to let you safely clean your device. [Screenshot.](https://www.dropbox.com/scl/fi/6vm94elcusix6oqe5su78/434266737-572f4e43-d42a-49c2-925f-4db90ebbfd06-1748011610.mp4?rlkey=r538vzwv0k9ba5rjqhw4goaa7&raw=1) - Cat Mode :: Disables keyboard and mouse to prevent cats and other cute creatures from interfering with your computer. Similar to Cleaning Mode but without blacking out the screen. [Screenshot.](https://www.dropbox.com/scl/fi/tpxsx5i9r1vkjlf2recad/Cat-Mode-1756829427.mp4?rlkey=wfyu7192971mnu19p3i2mmqs4&raw=1) - [Run shortcuts from the menu](https://sindresorhus.com/supercharge#run-shortcuts) :: Show your favorite shortcuts from the Shortcuts app in the menu. - Also available in [Short Run](https://sindresorhus.com/short-run) - [Keep computer awake](https://sindresorhus.com/supercharge#keep-awake) - [Change default browser](https://github.com/user-attachments/assets/b58a04da-2bdc-4bd0-bed4-ba62ba456491) (without a prompt) - Also available as an [independent app](https://sindresorhus.com/default-browser). - Shortcuts actions ##### Mouse and trackpad {#mouse-and-trackpad} - Simulate middle-click with a trackpad gesture :: Detects a multi-finger tap or physical click (3, 4, or 5 fingers) on the trackpad and synthesizes a middle-click, making all middle-click features work without a physical middle mouse button. The click variant is handy if you have “Tap to click” disabled or want a more deliberate gesture. Lift all fingers to reset recognition before the next gesture. - Adjust volume and display brightness with trackpad gestures :: Slide along the left or right side of the trackpad, or use a 3, 4, or 5-finger swipe. Adjust the sensitivity to make changes more or less precise, and optionally require holding ⇧ for side slides to prevent accidental triggering while typing. - Center mouse pointer on primary display when waking and unlocking :: Helps you quickly locate the mouse pointer after returning to your Mac. Also available via keyboard shortcut. - Hide mouse pointer automatically after a period of inactivity or with keyboard shortcut (like Cursorcerer) :: Reappears on movement or when the shortcut is pressed again. ##### Menu bar {#menu-bar} - Show the [menu bar window](https://github.com/user-attachments/assets/1b8e2e12-187a-4d32-8ba3-c13f154de9e0) for the Passwords app with a keyboard shortcut - Show the [menu bar window](https://github.com/user-attachments/assets/567bbbf5-12a1-45be-8ffa-93712574d4a0) for the Weather app with a keyboard shortcut - Show the window for the “Now Playing” menu bar item with a keyboard shortcut - Toggle Stage Manager directly from its menu bar item :: Normally, clicking it would open a window with a toggle. This saves one click. ##### Notifications {#notifications} - Clear notifications with a keyboard shortcut or from the menu - Click top visible notification with a keyboard shortcut - Auto-dismiss Shortcuts “Running your automation” notifications :: Automatically dismisses the “Running your automation” notifications that appear when running Shortcuts automations. ##### AirDrop and sharing {#airdrop} - Automatically select AirDrop target :: Enter a device name to automatically select it when the AirDrop dialog appears. - Move files received through AirDrop to a specified folder :: Automatically move files from the Downloads folder as soon as they are received. - Prevent Finder window from opening when receiving through AirDrop :: Stops Finder from opening a new window and stealing focus when you receive AirDropped files. - Exclude AirDrop, Mail, and Messages from the system Share menu :: These are usually forced to be shown by macOS. ##### Files {#files} - Archive old items in the Downloads folder automatically :: Keeps your Downloads folder tidy by moving older items to a separate location based on when they were added. - Auto-open downloaded calendar event (`.ics`) files and move them to trash after import :: Optionally remove alarms from events. - Lowercase file extension of files in Downloads folders :: For example, images from iPhone, which usually have `.JPG` or `.HEIC` extensions. Applies to both the local Downloads folder and the Downloads folder in iCloud Drive. - Eject all disks (menu action and keyboard shortcut) (optionally exclude some) - Empty trash *(menu action and keyboard shortcut)* ##### Toggles {#toggles} - Toggle dark mode - Toggle [Night Shift](https://support.apple.com/en-us/102191) - Toggle [True Tone](https://support.apple.com/en-us/102147) - Toggle low power mode - Toggle ^[grayscale mode](note: "Grayscale mode on macOS can be a useful tool for various purposes. It can help reduce eye strain during long work sessions, especially in low-light environments. For designers and developers, it’s valuable for checking contrast and readability of user interfaces without the influence of color. Content creators may use it to evaluate the tonal balance of images or videos. Additionally, some users find that grayscale helps minimize distractions and improve focus by reducing the visual appeal of non-work-related apps and websites. While initially an adjustment, many users report increased productivity and a more mindful approach to computer usage when employing grayscale mode periodically.") - Toggle desktop icons and widgets visibility - Toggle [hot corners](https://support.apple.com/guide/mac-help/mchlp3000/mac) - Toggle function keys (switch between using F1, F2, etc., as standard function keys or media keys) :: Only supported for the built-in MacBook keyboard and Magic Keyboard. - Toggle iOS notifications :: Only works if your Mac supports notifications from iOS. ##### Apple apps {#apple-apps} - [Mail: Copy message link](https://sindresorhus.com/supercharge#mail-copy-message-link) - [Notes: Copy note link](https://sindresorhus.com/supercharge#notes-copy-note-link) - Safari: Use Delete and Shift+Delete to navigate back and forward - TextEdit: Open a blank document instead of file picker on launch - Override Maps app language :: macOS doesn’t allow changing the Maps app language in System Settings. This fixes that. Useful when search doesn’t work well with your system language. ##### System {#system} - Sleep displays (menu action and keyboard shortcut) :: Puts all your Mac’s screens to sleep. - Start screen saver (menu action and keyboard shortcut) :: Starts your configured macOS screen saver. Enable it under “Shown menu items”. - Open system settings directly (usually requires a lot of clicks): - Hide My Email - Private Relay - VPN & Filters - Access hidden iMac and MacBook Neo accent colors :: Apply the special accent colors from iMac and MacBook Neo models on any Mac. These colors are normally only available on their respective models. Note: iMac computers have a fixed model accent color that cannot be modified through this feature. [Screenshot.](https://www.dropbox.com/scl/fi/oq8v03kvqj8kq4tnipqsz/Screen-Shot-2025-10-06-at-20.40.35-1759751136.png?rlkey=756uo6hmfepec095ibzcbw1pb&raw=1) - Prevent text clippings by disabling text dragging - Flush DNS cache Mentions: - [Video review](https://www.youtube.com/watch?v=hp-WMYZQ75U) - [Follow-up](https://www.youtube.com/watch?v=srZH0eTjylU) - [Article about the app](https://todayonmac.com/supercharge/) - [This App Brings Some of My Favorite Windows Features to Mac (Lifehacker)](https://lifehacker.com/tech/this-app-brings-some-of-my-favorite-windows-features-to-mac) - [Best Mac App Runner-Up, Best Apps of the Year (MacStories)](https://www.macstories.net/stories/macstories-selects-2025-recognizing-the-best-apps-of-the-year/#best-mac-app-runner-up) - [11 Mac Apps I (Almost) Can’t Live Without (FromSergio)](https://www.youtube.com/watch?v=ozVkroyqVGU&t=122s) - [Tiny macOS utility apps I love – Part 6](https://creativerly.com/tiny-macos-utility-apps-part-6/#supercharge) - [Video walkthrough (Spanish)](https://www.youtube.com/watch?v=jvwbDM4cfC8) --- ### Features explained
#### Run shortcuts {#run-shortcuts} Add shortcuts from the [Shortcuts](https://support.apple.com/guide/shortcuts-mac/intro-to-shortcuts-apdf22b0444c/mac) app to the menu for quick access. Show them in the main menu or a submenu. This is especially powerful as shortcuts can run AppleScript and shell scripts. You can even configure shortcuts to only show up when specific apps are active. Launch apps, run scripts, automate tasks — anything Shortcuts can do, now just one click away. [Screenshot](https://www.dropbox.com/scl/fi/ny886w93chpav0b325ioi/441329057-67290c47-4d78-490f-b0b8-f263ebc1022d-1748012141.png?rlkey=kf2ha9ygkvd4iu3zme8a0wo07&raw=1) Example shortcuts: - [Presentation Mode](https://www.icloud.com/shortcuts/c559563486a74b1dafb6ca2cb05e2cb5): Turns on “Do Not Disturb”, keeps screen awake, and hides desktop icons. - [Toggle “Do Not Disturb”](https://www.icloud.com/shortcuts/17a79c58e70446c5a0f1c1c89653a4aa) - [Flush DNS cache](https://www.icloud.com/shortcuts/a91b36f037d74cd7a647284e8c376f3d) - [Keep computer awake for 1 hour](https://www.icloud.com/shortcuts/b5a51cb8ef664377a0536de34711a641) **How is this better than the built-in Shortcuts menu bar item?** - One less menu bar item. - Closes the menu when running a shortcut. - Shortcuts can be configured to only show up for specific apps. - Shortcuts can be shown in a submenu. - Visually less noisy. #### Keep awake {#keep-awake} Prevent your Mac from sleeping and optionally prevent your screen from dimming. Hold Option while choosing “Keep Awake” in the Supercharge menu to temporarily use the opposite screen behavior without changing the setting. While active, the menu item shows whether the current session keeps the display on or allows it to sleep. A menu bar icon can be shown when active for visual indication. For advanced features like timing, check out [Lungo](https://sindresorhus.com/lungo). > [!IMPORTANT] > It will not prevent your computer from sleeping if you close the lid (except when connected to power and an external display). This is a macOS safety precaution and out of my control. > > Imagine you activate it while your computer is doing a heavy task and then put the laptop in your bag. Your laptop could easily overheat. > [!NOTE] > This will not prevent you from appearing idle in apps like Slack, Teams, or Discord, which track mouse movement to determine activity. #### Dock icon click behavior {#dock-icon-click-behavior} By default, clicking an app’s Dock icon when the app is active does nothing. With Supercharge, you can make it either hide the app, minimize all its windows, or cycle through the app’s windows. This can be particularly useful for quickly clearing your workspace or navigating between windows. You can also choose to unminimize all windows instead of just one when clicking a Dock icon of an app with minimized windows. #### Clicking green traffic light button fills window instead of entering fullscreen {#green-traffic-light-button-fill} Makes clicking the green traffic light button fill the window to fit the screen instead of entering fullscreen mode. Hold Option while clicking for the default fullscreen behavior. Click again to restore the previous window size. [Screenshot](https://github.com/user-attachments/assets/41dd0f46-05f7-46f2-b9a5-a5ae441da8a9) *It requires the “Displays have separate Spaces” system setting to be enabled because it relies on the window tile functionality, which is only available then.* #### Clicking yellow traffic light button hides app instead of minimizing window {#yellow-traffic-light-button-hide} Makes clicking the yellow traffic light button hide the app instead of minimizing the window. Hold Option while clicking for the default minimize behavior. #### Prevent accidental window closing for certain apps {#prevent-accidental-window-closing} Disables the red traffic light button for selected apps to prevent accidentally closing windows. This is particularly useful for apps where you want to be extra careful about not losing your work. You can hold Option while clicking the red traffic light button to close the window. #### Keyboard shortcut inspector {#keyboard-shortcut-inspector} Detects which apps are listening to or have registered a certain global keyboard shortcut. This is useful for troubleshooting keyboard shortcut conflicts between apps. Simply press any keyboard shortcut combination to see which apps are handling it. It is able to detect most shortcuts, but not all. Modifier-only double-tap shortcuts, like double Command or double Option, cannot be detected because macOS does not expose those registrations. [Screenshot](https://github.com/user-attachments/assets/0f3ddfaa-caf5-471d-a880-93c97952dada) #### Automatic clipboard clearing {#automatic-clipboard-clearing} The clipboard is a common privacy risk as it can retain sensitive content (passwords, credit card numbers, private messages) long after you’ve copied it. Any app on your Mac can silently read the clipboard at any time. When enabled, it automatically clears the clipboard: - About one minute after copying (timer restarts on new copy) - When your Mac sleeps or locks This ensures sensitive data doesn’t linger in your clipboard longer than needed, protecting you from both accidental exposure and malicious apps. #### Isolate window {#isolate-window} Hides all other apps and minimizes all other windows of the current app, leaving only the frontmost window visible. It’s like a turbocharged “Hide Others”, but also minimizes your extra windows in the current app, so you see just the one you care about. Perfect for quickly clearing away distractions when you have many windows open (for example, multiple Safari windows across profiles). Available as a menu action, a customizable keyboard shortcut, and as a Shortcuts action for automations. ##### Hyper key {#hyper-key} Remaps Caps Lock to function as a Hyper key — a single key that simultaneously activates all standard modifiers (Control + Option + Shift + Command). This enables the creation of highly unique shortcuts that are unlikely to conflict with existing ones, making them both easy to remember and quick to use. #### Automatically quit or hide inactive apps {#auto-quit-apps} Automatically quits or hides apps when you’re not using them, to maintain focus and free system resources. Like [Quitter](https://marco.org/apps#quitter) or Raycast’s [Auto Quit](https://manual.raycast.com/auto-quit), but built into Supercharge. Set up rules per app: quit or hide after a certain amount of inactivity. You might hide Slack after 3 minutes but quit X (Twitter) after 5 minutes, depending on how you work. Pauses a rule while that app is using the microphone, while any camera is in use, or while the screen is being captured. You can opt a rule into quitting or hiding even during calls or recording. Won’t affect the active app. Menu bar-only apps won’t be affected since they never become active or inactive. [Screenshot](https://www.dropbox.com/scl/fi/am443hh5uuglk8fiwmdqk/Auto-quit-feature-Screen-Shot-2025-11-06-at-15.45.16-1762418767.png?rlkey=fbbdi22wsdclq1cxeiwiijlam&raw=1) > [!TIP] > To enable only during specific times, places, or Focus modes, you can automate it with the Shortcuts app. **Why use auto-quit instead of just closing apps manually?** Apps don’t close themselves. You check Slack once, then switch to other work and it sits there all day using 3GB of memory, spiking CPU on animated GIFs, draining battery. Same with Discord, Teams, Twitter. They accumulate. You could manually quit them each time, but you won’t. Nobody does consistently. Even when backgrounded, these Electron apps consume resources that macOS App Nap can’t fully reclaim. Auto-quit handles it automatically: apps only run when you’re actually using them, not because you forgot to close them hours ago. Removes both the resource drain and the notification temptation that breaks your flow state. **Why not apply to all apps automatically?** Safety and control. You don’t want your code editor or music player suddenly quitting. Each app needs different timing: hide Slack after 3 minutes, quit Mail after 10. Manual selection ensures only resource-heavy, distraction-prone apps get auto-quit—not your productivity tools or background utilities. #### Add spacers to the Finder sidebar {#finder-sidebar-spacers} Creates visual separators in the Finder sidebar to help organize your folders into groups. Simply drag the spacer between two folders in the sidebar. The spacer appears as an invisible folder. > [!NOTE] > The spacer still shows a folder icon. It’s not possible to hide this. [Screenshot](https://www.dropbox.com/scl/fi/7ndp0sdiocgf0n7xdbolz/441615369-d929e3fe-6605-46f6-a99f-6f0f3486a88e-1748012169.png?rlkey=xr7716dr9xiyim0pu80qv6n5x&raw=1) #### Finder context menu additions {#finder-context-menu} Adds the following actions (can be customized) directly in the right-click menu in Finder: - New Text File :: Shown only when right-clicking an empty area in Finder. - New From Template :: Creates new files from templates. For example, a Markdown or Excel file. Templates can be organized in subfolders. Click a folder to copy its entire structure, or navigate into it to select individual files. Shown only when right-clicking an empty area in Finder, not a file. Supports dynamic placeholders in filenames (like `Diary {datetime-fixed}` → `Diary 2025-02-14 15.30`). And you can even have the file automatically open after naming it. [Screenshot.](https://github.com/user-attachments/assets/cb401a0e-2e40-4714-9493-b91563a7b387) - Open in New Window :: Opens the folder in a new window instead of a tab, even if you have set new windows to open as tabs. This action also shows up in the context menu for sidebar items. Useful when you want to view multiple folders side by side or drag items between locations. - Image/Video Dimensions - File Size - Date Created :: Shows the file’s creation date. Click to copy. - Date Modified :: Shows when the file was last modified. Click to copy. - Date Added :: Shows when the file was added to the current folder. Click to copy. - Copy Path - Copy Filename - Copy File URL :: Useful for deep links. Clicking such link reveals it in Finder. - Copy Markdown Link :: Useful for deep links. Clicking such link reveals it in Finder. - Copy Contents :: Copies the contents of text files to the clipboard. - Open Folder With :: [Missing apps?](https://sindresorhus.com/supercharge#add-app-open-folder-with) - Make Symlink - Cut & Paste :: Adds Windows-style “Cut” and “Paste” to move files: right-click files and choose “Cut”, then right-click the destination folder and choose “Cut”. - Move To… :: Moves files and folders to a destination you choose each time. - Move To :: Moves files and folders to a saved destination folder or a direct child folder nested under a saved destination. - Move To — Inline :: Shows move destinations directly in the context menu, for example “Move to Sorteras”. Destinations can have source folder limits and optional folder icons. - Copy To… :: Copies files and folders to a destination you choose each time. - Copy To :: Copies files and folders to a saved destination folder or a direct child folder nested under a saved destination. - Copy To — Inline :: Shows copy destinations directly in the context menu, for example “Copy to Sorteras”. Destinations can have source folder limits and optional folder icons. - Copy Here… :: The reverse of “Copy To”. Right-click a folder (or empty space in a window) and choose files or folders from anywhere to copy into it. Handy when you are deep in a folder and want to bring in something from elsewhere, like the Desktop, without dragging between windows. - Move Here… :: The reverse of “Move To”. Right-click a folder (or empty space in a window) and choose files or folders from anywhere to move into it. Handy when you are deep in a folder and want to bring in something from elsewhere, like the Desktop, without dragging between windows. - Share :: Shows the old-style Share item that is a submenu instead of a separate popover, which is faster to access. You can exclude AirDrop, Messages, and Mail from the menu, which are normally forced to be shown. However, there is no way to hide the existing Share item. - Inline Share Services :: Shows selected share extensions directly in the context menu for faster sharing. Customize which services appear in settings. [Screenshot](https://www.dropbox.com/scl/fi/wqlofapn6k11s3x2atmcp/Screen-Shot-2025-10-19-at-23.52.14-1760892902.png?rlkey=ek55ijtrjufe6if922cll2k2j&raw=1) - Open in App :: Adds menu items like “Open in Visual Studio Code” directly to the Finder context menu. Text editors show up for folders and text files, while other apps only show up for types they support. [Screenshot.](https://github.com/user-attachments/assets/980340bc-a257-475c-9a02-7b98853df9a7) - Open in Terminal :: Shown only when right-clicking a folder or an empty area in Finder. Supports Terminal, iTerm, Ghostty, kitty, WezTerm, Alacritty, Warp, and Prompt. - AirDrop :: Shares files via AirDrop. - Email :: Creates a new email message in the default email app with the selected files as attachments. Works with Mail, Outlook, Spark, Mimestream, Airmail, Canary Mail, eM Client, and maybe other apps. Not Thunderbird. - Run Shortcut :: Shares files with a shortcut from the Shortcuts app. - Update Modified Date - Folder Color :: Changes the color of folders. [Screenshot.](https://github.com/user-attachments/assets/0687455b-61d3-4fdd-a863-1e378a3701d5) - Toggle Hidden Files :: Toggles visibility of hidden files. - New Folder Inside :: Creates a new folder inside the selected folder and automatically opens it for renaming. Only shown when selecting a single folder. - Flatten Folder :: Moves all files from subfolders to the folder’s root, eliminating nesting. Useful for cleaning up messy downloads or simplifying complicated folder structures. Handles duplicate names automatically. - Make Executable :: Makes files executable, similar to `chmod +x` in the terminal. Useful for shell scripts. - Invert Selection :: Selects the files and folders in Finder that are not selected. - Delete Immediately :: Permanently deletes files and folders without sending them to the Trash. - Copy Checksum :: SHA-1, SHA-256, SHA-384, SHA-512, MD5, CRC32 - Unquarantine :: Removes the quarantine flag that macOS adds to downloaded files and apps. This removes [security prompts](https://github.com/user-attachments/assets/adbf3c7e-8fee-4cd9-9a90-3958badfa94e) and restrictions for trusted items. - Scan QR Code :: Scans QR codes in images and copies the content to the clipboard. Only shown when right-clicking image files. - Print :: Prints files directly with the default printer without showing any dialog. - Remove Location Metadata :: Removes GPS location metadata from images to protect your privacy. - Remove All Metadata :: Removes all metadata (EXIF, GPS, etc.) from images. - Lock / Unlock :: Locks or unlocks files and folders. Locked items cannot be modified, renamed, or deleted until unlocked. Same as “Finder › Get Info › Locked”. - Git: Go to Root :: Navigates to the Git repository root folder in the current Finder window. Only shown when inside a Git repository. - Git: Show on GitHub :: Opens the selected file or folder on GitHub at the current commit. Only shown when inside a GitHub repository with an “origin” or “upstream” remote pointing to GitHub. - App: Bundle Identifier :: Shows the app’s bundle identifier. Only shown when selecting a single app. Click to copy. - App: Version :: Shows the app’s version. Only shown when selecting a single app. Click to copy. - App: Show on App Store :: Opens the app’s page in the App Store app. Only shown when selecting a single app. - App: Copy App Store URL :: Copies shareable links to the App Store pages of the selected apps. - Is Identical :: Shows whether two or more selected files are identical. - Is Identical (Interactive) :: Opens a comparison window showing whether selected files are identical. Supports drag-and-drop to add more files. Groups identical files together and lists unique files separately. [Screenshot.](https://www.dropbox.com/scl/fi/cctbogzq60huyxceoa5xh/Is-Identical-Supercharge-Screen-Shot-2025-12-11-at-04.59.12-1765425592.png?rlkey=gzwhyzvgmakzz5r14nvrkko1s&raw=1) - Copy Folder Tree :: Copies the folder’s tree structure to the clipboard using a visual tree format with box-drawing characters. Useful for documentation, sharing folder layouts, or pasting into chat. - Combine Contents of Folders :: Moves all direct contents from the selected folders into the alphabetically first folder. Empty source folders are deleted. Only shown when selecting two or more folders. - Show Symlink Original :: Reveals the original file or folder that a symlink points to. Only shown for symlinks. *They appear at the bottom of the context menu. There is no way to change that. [They also won’t appear in iCloud, Dropbox, OneDrive or any other sync folder.](https://sindresorhus.com/supercharge#finder-context-menu-icloud)* #### Services {#macos-services} - Copy Path - Copy Filename - Copy File URL :: Useful for deep links. Clicking such link reveals it in Finder. - Copy Markdown Link :: Useful for deep links. Clicking such link reveals it in Finder. - Copy File Contents :: Copies the contents of text files to the clipboard. - Copy Checksum (SHA-1, SHA-256, SHA-384, SHA-512, MD5, CRC32) :: Copies checksums of files. - AirDrop :: Shares files via AirDrop. - Run Shortcut :: Shares files with a shortcut from the Shortcuts app. - Scan QR Code :: Scans QR codes from images and copies their content to the clipboard. - Email :: Creates a new email message in the default email app with the selected files as attachments. Works with Mail, Outlook, Spark, Mimestream, Airmail, Canary Mail, and maybe other apps. Not Thunderbird. - Open URLs :: Opens all given URLs or those automatically detected in text. - Copy URLs :: Copies all given URLs or those automatically detected in text. Finder-specific services: - Move To… :: Moves files and folders to a destination you choose each time. - Copy To… :: Copies files and folders to a destination you choose each time. - Open in Terminal :: Shown only when right-clicking a folder in Finder. Supports Terminal, iTerm, Ghostty, kitty, WezTerm, Alacritty, Warp, and Prompt. - Update Modified Date :: Updates the modified date of files and folders to the current time. - Make Symlink - Unquarantine :: Removes the quarantine flag that macOS adds to downloaded files and apps. This removes [security prompts](https://github.com/user-attachments/assets/adbf3c7e-8fee-4cd9-9a90-3958badfa94e) and restrictions for trusted items. - New Folder Inside :: Creates a new folder inside the selected folder and opens it for renaming. - Flatten Folder :: Moves all files from subfolders to the folder’s root, eliminating nesting. - Make Executable :: Makes files executable, similar to `chmod +x` in the terminal. Useful for shell scripts. - New Text File in Finder :: Creates a new text file in the current folder. You must right-click an existing file or folder to access it. - Invert Selection in Finder :: Selects the files and folders in Finder that are not selected. - Toggle Hidden Files in Finder :: Toggles visibility of hidden files. - Lock :: Locks files and folders. Locked items cannot be modified, renamed, or deleted. - Unlock :: Unlocks files and folders, allowing them to be modified, renamed, or deleted. - Are Files Identical? :: Shows whether two or more selected files are identical. - Are Files Identical? (Interactive) :: Opens a comparison window showing whether selected files are identical. Supports drag-and-drop to add more files. Groups identical files together and lists unique files separately. - Copy Folder Tree :: Copies the folder’s tree structure to the clipboard using a visual tree format. - Combine Contents of Folders :: Moves all direct contents from the selected folders into the alphabetically first folder. Empty source folders are deleted. - Show Symlink Original :: Reveals the original file or folder that a symlink points to. *[macOS Services](https://macreports.com/what-is-the-services-menu-in-macos/) are built-in quick actions available in right-click and app menus system-wide. They let you perform tasks like copying file info or text without leaving your current app. Supercharge adds extra, genuinely useful services to make these menus even more powerful.* #### Capture text from anywhere on screen {#capture-text} Select any region of your screen to instantly copy the text, even if it’s unselectable. Great for extracting text from images, PDFs, presentations, or any other content. Powered by macOS’ built-in OCR. Text quality and language support depend on the system, not the app. [Screenshot](https://www.dropbox.com/scl/fi/6t4hst8wtbnm9k5hvrg1q/Capture-Text-Screen-Shot-2025-09-02-at-21.32.17-1756825559.mp4?rlkey=hztcfyrcba7v7hn7ex34tjy2y&raw=1) *Check out my [Text Lens](https://sindresorhus.com/text-lens) app for more features.* **Supported languages** - English - French - Italian - German - Spanish - Portuguese - Chinese, Simplified - Chinese, Traditional - Cantonese, Simplified - Cantonese, Traditional - Korean - Japanese - Russian - Ukrainian - Thai - Vietnamese - Arabic - Arabic, Najdi - Turkish - Indonesian - Czech - Danish - Dutch - Norwegian Nynorsk - Norwegian Bokmål - Malay - Polish - Romanian - Swedish #### Capture and translate text from anywhere on screen {#capture-translate-text} Select any region of your screen to instantly translate text, even from images or unselectable text. - [Screenshot](https://github.com/user-attachments/assets/e7c6b336-6b70-4dfe-bba1-ba6ca18907c0) - [Supported languages](https://www.apple.com/macos/feature-availability/#translate-system-wide-translation) (except Hindi) #### Scan QR codes and barcodes {#scan-qr-codes} Select any region of your screen or use an image from your clipboard to instantly scan QR codes and barcodes and copy their content to the clipboard. Supports scanning multiple codes at once. - [Screenshot](https://github.com/user-attachments/assets/caa5aed9-5db2-460e-bbbb-15fae45a5195) - [Supported barcodes](https://developer.apple.com/documentation/vision/vnbarcodesymbology#Supported-Symbologies) #### Copy message link in Mail {#mail-copy-message-link} When you are in the Mail app, you can [open the Supercharge menu](https://github.com/user-attachments/assets/5cce205b-6743-4a60-958c-074a308ccc68) to copy a direct link to one or more selected messages. You can also set up a keyboard shortcut for this. Copying a message link can be useful if you want to refer to specific emails in other contexts. The link will look like this: `message://%3c66e85e1db33c7_961cfc499cd@lowworker-c6756b946-4rskj.mail%3e`. #### Copy note link in Notes {#notes-copy-note-link} When you are in the Notes app, you can [open the Supercharge menu](https://github.com/user-attachments/assets/028c2952-d708-4eda-ad39-613767532eb7) to copy a direct link to one or more selected notes. You can also set up a keyboard shortcut for this. Copying a note link can be useful if you want to refer to specific notes in other contexts, like in a task manager or calendar event. The link will look like this: `applenotes:note/933C49CC-04F4-5F21-A3EE-2CA93AFC88DD`. When clicked, it opens directly in the Notes app. #### Close and minimize windows and hide and quit apps directly from Mission Control {#mission-control-improvements} Enhances Mission Control by letting you close windows or quit apps by right-clicking the hovered window and use keyboard shortcuts (⌘W, ⌘Q, ⌘H, ⌘M) on the window you are hovering over. This makes window management more efficient as you don’t have to exit Mission Control to perform these actions. [Example](https://github.com/user-attachments/assets/23c71431-4d3b-4913-b484-3a3f0b7b2b07) You can also navigate windows with arrow keys. Why not add an “X” overlay button on previews? Because right-click is faster and easier: you can click anywhere on the preview instead of hunting a tiny target. It keeps Mission Control visually clean, reduces misclicks, and avoids fighting its animations. #### Dock folder click behavior {#dock-folder-click} By default, clicking a folder in the Dock shows its contents in a popover. With Supercharge, you can make it directly reveal the folder in Finder instead. Right-clicking still shows the folder contents, and Option-right-click shows the Dock menu. Revealing in Finder does not work with smart folders. #### Export/import app settings {#export-import-app-settings} Back up and restore settings for Mac apps. Export to `.app-settings` files, then import on any Mac that has Supercharge. [Video](https://github.com/user-attachments/assets/82727408-3acb-4c18-91c6-428f1e0ad8c5) **How it works** - Export: Select apps to create backup files (saved to Downloads) - Import: Double-click `.app-settings` files to restore **Compatibility** - Works: Apps that store settings in the standard way ([UserDefaults](https://en.wikipedia.org/wiki/Defaults_(software))). Most native Mac apps do, like: Apple apps, my apps, Things, OmniFocus, etc. - Doesn’t work: Electron/Chrome-based apps and web wrappers (Slack, VS Code, Discord, Spotify, Notion) or apps that store settings outside UserDefaults **Tips** - Verify mission-critical apps before relying on this for migrations - `.app-settings` are standard [Property List](https://en.wikipedia.org/wiki/Property_list) files, and can be opened in any text editor - Use “Export All” for complete backup (timestamped folder) ### For Windows switchers {#from-windows} Just moved to macOS from Windows? Supercharge helps you feel at home: - Use Command+X and Command+V to move files in Finder — just like Cut and Paste in Windows Explorer. - Fill windows to screen size instead of entering fullscreen — matches Windows maximize behavior. - Hide apps by clicking their Dock icon — like minimizing to the taskbar in Windows. - Press Return to open files in Finder (rename with F2 or Shift+Return). - Delete moves files to the trash (no need for Command+Delete). - Create new text files in Finder with Option+N or from the right-click menu — just like in Windows Explorer. - Add “Move To” and “Copy To” to Finder’s right-click menu — like in Windows. - Open Terminal from Finder — like “Open in Terminal” in Windows Explorer. - Restore all app windows when focusing an app — like taskbar behavior in Windows. - “Delete Immediately” in Finder’s right-click menu — like Shift+Delete in Windows. - Minimize all windows or all but the frontmost — same as Win+M or Win+Home. - Shift-click Dock icons to open a new window — just like Shift+clicking taskbar icons. - Command+Q (kinda) quits Finder — like closing Explorer in Windows. - Finder shows a new window when activated with no windows open — Windows Explorer always shows a window when launched. - Click Dock folders to open them in Finder — like clicking taskbar folders in Windows, which opens Explorer. - Use Delete / Shift+Delete in Safari to go back/forward — just like in Windows browsers. - Invert selection in Finder — matches “Invert Selection” in Windows Explorer. - Print files from Finder’s right-click menu — like Windows’ right-click “Print”. Make macOS feel less foreign — and more powerful.
> [!TIP] > You may also like my [Shareful](https://sindresorhus.com/shareful), [Menu Bar Spacing](https://sindresorhus.com/menu-bar-spacing), and [Pure Paste](https://sindresorhus.com/pure-paste) apps. ## Trial @Trial(url: "https://www.dropbox.com/scl/fi/58ujynvqo09r1ni8ywl0n/Supercharge-1.30.1-trial-1790570015.zip?rlkey=bgo4hf47jnmqqrxxleilcferf&raw=1") { The trial is fully functional. The only limitation is a reminder to buy the app every 12 hours, and no automatic updates. All data and settings carry over if you buy it. } *Download it to the Downloads folder, double-click to unzip, and then move it to the `/Applications` folder.* You can also [try it on Setapp](https://go.setapp.com/stp181?refAppID=742&utm_medium=vendor_program&utm_content=button) for 7 days for free. *Requires macOS 26 or later* ## Tips ### Troubleshooting {#troubleshooting} - Ensure you are on the latest version (click the “Check for Updates” button). - Restart your computer. - Try closing any anti-virus app you have running as it may [interfere with the app](https://sindresorhus.com/apps/faq#secure-input-problem) (or at least disable any Secure Keyboard Entry type setting it may have). And if you don’t have any anti-virus app, try closing down all apps and menu bar items, just to rule out some other app interfering. If it’s a work computer, your company may have something installed that prevents the app from working. - Reset permissions: Try clicking “… › Debug › Reset Permissions” in the Supercharge menu. #### Accidental quit troubleshooting A common issue is that macOS corrupts the privacy permissions. Try resetting permissions (see above). If the Supercharge menu reports `loginwindow` as blocking keyboard shortcuts, lock your screen with Control+Command+Q, then unlock it. This is a known macOS bug. Do not try to quit `loginwindow`. #### Cut and paste files troubleshooting When you cut the files, ensure you pressed Command+X (cut) and not Command+C (copy). You still paste with Command+V. To make sure you used the feature correctly, try this: Select a file in Finder, press Command+X, change to a different folder, press Command+V. The file should have been moved to this new folder. > [!NOTE] > You cannot cut, highlight a folder, and then paste. You have to actually go into the folder to paste to it. That’s just how Finder works. Same with copy-pasting. If it’s still not working, try this: Select a file in Finder, press Command+C, change to a different folder, press Option+Command+V. The file should have been moved to this new folder. If this did not work, the problem is not this app, as those are the keyboard shortcuts it simulates. As a last resort, try [resetting permissions](https://sindresorhus.com/apps/faq#mac-reset-permissions) and restarting your computer. Also try closing any anti-virus app you have running as it may [interfere with the app](https://sindresorhus.com/apps/faq#secure-input-problem) (or at least disable any Secure Keyboard Entry type setting it may have). And if you don’t have any anti-virus app, try closing down all apps and menu bar items, just to rule out some other app interfering. If it’s a work computer, your company may have something installed that prevents the app from working. ### Launch browser If you have enabled showing browsers in the menu, you can hold the Option key and click a browser in the menu to open it, rather than setting it as the default. ### Tricks Some things you can already do that you may not know about: - Hide an app by Option-clicking on the app’s Dock icon. - Show Control Center by pressing Fn+C. - Toggle a specific VPN using a keyboard shortcut with Shortcuts. Add [this shortcut](https://www.icloud.com/shortcuts/a0c3171fe98a4379b8197299a84b060e) and set the VPN parameter and a keyboard shortcut. - [Make Finder remember its size and position.](https://apple.stackexchange.com/a/171274/2363) - [Prevent opening apps when clicking links that are Universal Links.](https://lapcatsoftware.com/articles/universal-links2.html) - [Change the keyboard shortcut for menu item actions in a specific app.](https://support.apple.com/guide/mac-help/create-keyboard-shortcuts-for-apps-mchlp2271/mac) - [Change the keyboard shortcut for menu item actions in all apps.](https://apple.stackexchange.com/a/125628/2363) - Set Finder’s default view options: Open a folder, press Command+J, adjust settings, and click “Use as Defaults”. To reset a folder’s custom settings, press Command+J, hold Option, and click “Restore to Defaults”. - [Show “Dimensions” column in Finder.](https://apple.stackexchange.com/questions/18728/how-can-i-show-the-dimension-column-in-finder) - Option-click the sound menu bar icon to be able to also choose input device. Or use the tweak in Supercharge to see it by default. - In open/save dialogs, navigate to a copied absolute path by pressing Command+V. - [Translate website in Safari using a keyboard shortcut.](https://www.reddit.com/r/Safari/comments/1auqjjc/how_to_make_safari_full_page_translation_by/) - In Safari, enter Picture-in-Picture by pressing Shift+Command+R. - In Finder, select a file, and then press Command+Option+C to copy its path. ## Frequently Asked Questions {#faq} ### I have a feature request, bug report, or some feedback Some things are not possible though: - [Removing the Trash icon in the Dock.](https://apple.stackexchange.com/a/454812/2363) - Removing the Finder icon in the Dock. - Disabling Stage Manager animations. - Fill the entire row with the file’s tag color in Finder. - Naming spaces. Check out [this app](https://github.com/Jaysce/Spaceman) for showing space names in the menu bar. - Removing or changing Finder context menu items. It can only add items. - Colored Finder sidebar icons. - Moving Stage Manager to the right without having the Dock on the left side. - The “Mission Control tweaks” feature for Stage Manager. - Toggle “auto brightness” system setting. Some things are not planned: - Window switcher - I recommend [AltTab](https://alt-tab.app) - Memory cleaner - Apps like these are a scam. macOS handles memory efficiently. There is no need for an app like this. - App uninstaller - I recommend [Pearcleaner](https://github.com/alienator88/Pearcleaner) - App thinner - I recommend [Pearcleaner](https://github.com/alienator88/Pearcleaner) ### The app does not show up in the menu bar [Try this](https://sindresorhus.com/apps/faq#app-not-showing-in-menu-bar) You may also have disabled the “Show menu bar icon” setting, which hides the menu bar icon. Launch the app again to show the main window. ### I moved to a new computer, how can I download the app again? {#reinstall} If you purchased it on [Gumroad](https://gumroad.com), you can download the app again from your Gumroad account or the Gumroad receipt email. ### How do I move from the Setapp version to the direct version and keep my settings? {#switch-from-setapp} The two versions use different bundle identifiers, so settings don’t carry over automatically. Transfer them with Supercharge’s own [Export/import app settings](https://sindresorhus.com/supercharge#export-import-app-settings) feature. Export from the Setapp copy, then import into the direct copy. You can also use my [App Buddy](https://sindresorhus.com/app-buddy) app. ### The tweaks like Finder cut & paste no longer work This usually happens when an app [blocks keyboard input reading](https://sindresorhus.com/apps/faq#secure-input-problem). ### Why is Supercharge so expensive? {#price} - **It’s really 10 apps in 1**\ Supercharge packs dozens of powerful features that would typically require multiple separate apps. - **One-time purchase, lifetime value**\ In a world where everything is subscription-based, Supercharge is a one-time purchase with unlimited free updates forever. No monthly fees, no restrictions on how many personal devices you can use it on. - **Fixes countless macOS annoyances**\ Apple leaves many frustrating gaps in macOS functionality. Supercharge addresses dozens of these pain points that users encounter daily but Apple hasn’t fixed. - **Complex engineering under the hood**\ The app performs very difficult technical tasks, from low-level system integration to advanced automation features. Each feature requires significant development effort to work reliably across macOS updates. - **Dedicated ongoing support**\ You get responsive support and regular feature additions. - **Professional quality and reliability**\ I have been obsessively crafting Mac apps for years. - **Small market, high development costs**\ Mac power users are a niche market. The development costs must be spread across fewer users compared to mass-market apps. - **Support an indie developer**\ Get actual human support, genuine privacy protection, and a developer who listens to your feedback, unlike faceless corporations where you’re just another number. I’m in it for the long haul. Try the [trial](https://sindresorhus.com/supercharge#trial) and see for yourself. ### I can already do this with the command-line, BetterTouchTool, Keyboard Maestro, etc. Supercharge offers a simpler, more user-friendly approach. It’s designed for users who want quick access to useful features without the complexity of scripting or configuring advanced tools. Supercharge provides a curated set of enhancements that work right out of the box, saving you time and effort in setup and maintenance. If you prefer more granular control and don’t mind the setup process, those other tools might be a better fit for you. ### Why Command+X? I can already move files with Command+C and Option+Command+V - It’s more logical to cut & paste than copy & move. - Consistency and muscle memory benefits if you also use Linux or Windows. ### What are Dock spacers? {#dock-spacers} Dock spacers are [invisible gaps](https://res.cloudinary.com/cpenned/image/upload/f_auto,w_auto/v1636732613/Blog/post-images/20211112-dock.jpg) you can add to your Mac’s Dock. They help organize your apps into groups, improving visual clarity. Supercharge lets you easily add these spacers, giving you better control over your Dock’s layout. ### How do I exit Cat Mode and Cleaning Mode? Press Command six times. ### Can I add custom actions to the app? As of now, the app focuses on providing a curated set of built-in features for enhancing your Mac experience. I’m happy to consider requests. ### Can you add a certain toggle? I’m happy to consider requests, but I don’t intend for this app to turn into a “toggler” app. I have just provided some commonly needed toggles. Some toggles I don’t plan to add: - AirPods - Keep awake *(check out [Lungo](https://sindresorhus.com/lungo))* ### Does the app consume a lot of system resources? No, the app is optimized to run efficiently in the background with minimal CPU, memory, and battery usage. Most features are event-driven and only activate when needed. ### Why doesn’t the “Prevent accidental quit” tweak apply in the Command+Tab app switcher? This is intentional. The feature exists for one specific slip: Q sits right next to W, so it’s easy to hit ⌘Q (quit) when you meant ⌘W (close window). That mix-up can’t happen in the app switcher, because there’s no window to close there in the first place. Quitting from the switcher is also already a deliberate, multi-step act: you hold ⌘, tab to a specific app, and only then press Q. It’s very hard to do by accident. And forcing a press-and-hold or double-tap there would defeat the purpose of the switcher, which is to quit apps quickly while cycling through them. ### I cannot use Control+Space or Control+Shift+Space as a keyboard shortcut Go to “System Settings › Keyboard › Keyboard Shortcuts › Input Sources” and disable them all. ### Why would I want to clear my clipboard? Clearing the clipboard helps protect privacy by removing potentially sensitive information (like passwords or personal data) that might otherwise remain available for pasting. Any app can silently read the clipboard. And you could also accidentally paste it somewhere you didn’t intend to. ### Why don’t the Finder context menu items show up in iCloud, Dropbox, and OneDrive folders? {#finder-context-menu-icloud} Finder Sync extensions, which power these context menu items, are intended to add sync functionality for third-party services in Finder. Since iCloud, Dropbox, and OneDrive folders have their own built-in sync, macOS doesn’t allow the Supercharge extension in these locations to prevent conflicts. Some of the Finder context menu items are also available as [macOS services](https://sindresorhus.com/supercharge#macos-services), which do show up in synced folders. ### I am seeing the Supercharge icon for external drives in the Finder sidebar when enabling context menu items {#finder-extension-sidebar-icon} This is a macOS bug and out of my control. When context menu items are enabled for external volumes, macOS shows the Supercharge app icon for each drive instead of drive icons in the Finder sidebar. As a workaround, you can disable showing the context menu items on external drives. ### How can I add my preferred apps to the “Open Folder With” Finder context menu? {#add-app-open-folder-with} The menu shows apps that declare support for opening folders. This is controlled by app developers, not by Supercharge. To get your preferred apps to appear in this menu, contact the developers of those apps and request them to add folder opening support. The developer will need to add `public.folder` to `LSItemContentTypes` in their app’s Info.plist: ```xml LSItemContentTypes public.folder ``` *(If the app already contains `public.directory`, it will still have to add `public.folder`)* [Example report.](https://github.com/coteditor/CotEditor/issues/1809) If you know the app supports opening folders but it doesn’t show up, it may be that the app has not properly declared support for it. Contact the app developer about adding the above. You could also [contact me](https://sindresorhus.com/feedback?product=Supercharge), and I can manually add the app. ### Can you add support for keyboard shortcuts to change default browser? Maybe. For now, you can make a shortcut in the Shortcuts app, give it a keyboard shortcut, and use the “Set Default Browser” Shortcuts action that comes with Supercharge. ### Can you add more features to changing the default browser, like rules? Features like rules require the app to intercept and forward URLs by acting as the default browser. This is out of scope for this app. Check out my [Velja](https://sindresorhus.com/velja) app for that. ### Why do some tweaks have a list of pre-defined keyboard shortcuts instead of a shortcut recorder? The pre-defined shortcuts are intentionally curated to help users quickly select sensible shortcuts that won’t conflict with built-in app shortcuts. This approach reduces potential support issues. Missing a useful key combination? Let me know, and I will consider adding it. ### Can you add a Finder keyboard shortcut to move selected items into a new folder? This is already supported natively. See the “File › New Folder with Selection” menu item. Select some items and then press Control+Command+N. You can change the keyboard shortcut in the [System Settings](https://support.apple.com/guide/mac-help/create-keyboard-shortcuts-for-apps-mchlp2271/mac). ### Can the app support clearing clipboard formatting? {#pure-paste} Check out my [Pure Paste](https://sindresorhus.com/pure-paste) app for this. I think it makes more sense as a separate app. ### Can it play a sound when pressing one of the keyboard shortcuts? Use the “Play a sound when a specified keyboard shortcut is triggered” feature in the “Shortcuts”. Set it to the same shortcut to get audible feedback without changing how the shortcut behaves. ### How can I copy the original text in the translate popover? The translate popover is provided by macOS and does not support copying the original text. As a workaround, select the same language as the destination language, and then click “Copy Translation”. ### How can I run the actions from Raycast or Alfred? Most of the actions are exposed as Shortcuts actions, so create a shortcut with the action and run it from Raycast or Alfred. ### Can I trigger the actions using a custom URL scheme? It’s something I plan to support at some point, but for now, you can use Shortcuts, as mentioned above. ### Can you localize the app into my language? {#language} No, the app is English-only. ### Can the app support hiding menu bar items? No, that’s out of scope for this app. I recommend [Ice](https://icemenubar.app). ### Can you add Alt-Tab functionality like Windows? No, this would be very complex to implement well and there is already an excellent free app called [AltTab](https://alt-tab-macos.netlify.app) that does exactly this. ### Supercharge and Shortcutie seem to have some of the same actions for Shortcuts {#shortcutie} There is some overlap, but [Shortcutie](https://sindresorhus.com/shortcutie) includes many more actions. Supercharge only includes actions for its own features. Supercharge has the following Shortcuts actions that Shortcutie does not have: - Pick Color - Scan QR Code (Interactive) - Capture Text (Interactive) - Capture & Translate Text (Interactive) - Get Links to Selected Mail Messages - Copy Links to Selected Mail Messages - Get Links to Selected Notes - Copy Links to Selected Notes - Start Cleaning Mode - Start Cat Mode - Export App Settings - Get/Set Auto-Quit State - Get/Set Dock Edge Activation - Get/Set Keep Awake State - Get/Set Sound Mute State - Get/Set Microphone Mute State - Toggle Finder - Toggle Terminal - Toggle Passwords Menu Bar Window - Toggle Weather Menu Bar Window - Toggle Now Playing Window - Toggle Hot Corners - Show Poof Animation - Get/Set Media Keys App Control Target ### Why is this not in the App Store? Much of the functionality would not be possible in the App Store because of [sandboxing](https://sindresorhus.com/apps/faq#macos-sandbox). ## Scripting #### Events The [distributed notification](https://sindresorhus.com/apps/faq#distributed-notifications) `com.sindresorhus.defaultBrowserDidChange` is emitted when the default browser is changed from the app or the Shortcuts action. ## Older Versions - [1.26.0](https://www.dropbox.com/scl/fi/ih52hpepe7ksavzdtsjvl/Supercharge-1.26-0-macOS-15-1777112330.zip?rlkey=1oslvlblu593qi23hs35hpusb&raw=1) for macOS 15 These are free for everyone but they will not run on newer macOS versions. --- # Scratchpad Quick notes, always available. URL: https://sindresorhus.com/scratchpad One note, always one click or tap away. Write down a thought before it’s gone, and find it there later. Plain text only. Simple by design. On macOS, the app sits in your menu bar or Dock, ready whenever inspiration strikes. On iOS, it can be accessed from the Home Screen, Lock Screen, or Control Center. - One-tap access - Clean, distraction-free interface - Lightning-fast and lightweight - Sync with iCloud, or not - Word and character count - Custom hotkey for instant writing (macOS) - 30+ menu bar icons to choose from (macOS) - Translucent background (macOS) - Font settings - Support for [Shortcuts](https://support.apple.com/en-ng/guide/shortcuts/welcome/ios), [share service](https://support.apple.com/en-ng/guide/mac-help/mh40614/mac), and [macOS Services](https://support.apple.com/en-bh/guide/mac-help/mchlp1012/mac) Perfect for brain dumps, quick drafts, and fleeting ideas. Your thoughts are just a click away, without breaking your workflow. It’s a [Universal Purchase](https://sindresorhus.com/apps/faq#universal-purchase). [Review by MacStories](https://www.macstories.net/reviews/scratchpad-the-cross-device-text-utility-that-pairs-perfectly-with-your-clipboard-manager/) #### Privacy The app uses iCloud syncing to securely sync your text across devices. This feature is opt-in. Neither the app developer nor Apple can access the text in your scratchpad. The app does not collect any personal data and contains no tracking. ## Trial @Trial(url: "https://www.dropbox.com/scl/fi/af7ry35naarkttdq6d6fr/Scratchpad-1.5.0-trial-1792017662.zip?rlkey=q6lxjpekmfh0lvt42txvthat6&raw=1") { The trial of the macOS app is fully functional. The only limitation is a reminder to buy the app every 12 hours, and no automatic updates. All data and settings carry over if you buy it on the App Store. } *Download it to the Downloads folder, double-click to unzip, and then move it to the `/Applications` folder.* *Requires macOS 27 or later* There is no trial for the iOS version. ## Tips ### Troubleshoot syncing {#troubleshooting} - After enabling sync, try writing some more text on all the devices. - [More…](https://sindresorhus.com/apps/faq#icloud-sync) ### Back up and restore your note {#backup} The app automatically keeps local backups of your note, so you can recover from accidental edits or deletion. This is enabled by default. To restore a previous version: 1. Open the “…” menu and choose “Backups”. 1. Select a backup to preview its contents. 1. Tap “Restore” to replace your current note with it. Your current note is backed up first, so you can undo a restore. Backups are created on changes (about every 10 minutes) and when the app moves to the background. The most recent 100 backups are kept. Backups are stored locally on each device and are not synced. You can turn automatic backups off in the settings. ### Keyboard shortcuts macOS - Copy text ⇧⌘C - Share text ⇧⌘S - Select all text ⌘A - Increase text size: ⌘+ - Decrease text size: ⌘- - Reset text size: ⌘0 ### Launch app from Lock Screen Quickly open the app using the built-in Lock Screen widget. For more customization options, you can also use my [Quick Launch](https://sindresorhus.com/quick-launch) app. ### Quickly add text to the scratchpad 1. Tap the share button in any app that deals with text and select “Add to Scratchpad”. 1. macOS: Select some text in any app, right-click, and select “Services › Add to Scratchpad” or “Share › Add to Scratchpad”. 1. iOS: Select some text in any app, tap “Share › Add to Scratchpad”. 1. Use the [Shortcuts action](https://sindresorhus.com/scratchpad#scripting) 1. Use the [custom URL scheme](https://sindresorhus.com/scratchpad#scripting) 1. Use [this shortcut](https://www.icloud.com/shortcuts/caa5fd4f5a7240cf951ef9a4184b0522) directly from a share sheet ### PopClip integration {#popclip} Select the below snippet and install it with PopClip: ```yaml #popclip Add selected text to Scratchpad name: Scratchpad icon: iconify:material-symbols:add-notes javascript: | popclip.openUrl(`scratchpad:append?text=${encodeURIComponent(popclip.input.text)}&hide`, {activate: false}); ``` You can replace `append` with `prepend`. And if you want Scratchpad to show when adding text, use this: ```yaml #popclip Add selected text to Scratchpad name: Scratchpad icon: iconify:material-symbols:add-notes url: scratchpad:append?text={popclip text} ``` ## Frequently Asked Questions {#faq} ### The app does not show up in the menu bar [Try this](https://sindresorhus.com/apps/faq#app-not-showing-in-menu-bar) You may also have disabled the “Show menu bar icon” setting, which hides the menu bar icon. Launch the app again to show the main window. ### Why is my note not syncing between devices? Refer to the [troubleshooting section](https://sindresorhus.com/scratchpad#troubleshooting) above to resolve syncing issues. ### How do I restore a previous version of my note? The app keeps automatic local backups. Open the “…” menu and choose “Backups”, select one, and tap “Restore”. See [Back up and restore](https://sindresorhus.com/scratchpad#backup) for details. ### Why is “Clear Text” tucked inside a menu instead of being directly accessible? It clears your entire note in a single action, so it’s placed one step away to prevent accidental deletion. A confirmation dialog would add even more friction every time, so the menu is the simpler middle ground. On macOS, you can also clear instantly with ⇧⌘N. And if you ever clear by mistake, just undo to bring it back (something many people don’t realize you can do here). ### Can you add Markdown syntax highlighting? I don’t plan to add that as I want to keep the app simple. I do plan to make a proper minimal Markdown editor at some point, but that’s not this app. ### Does the app support text formatting? No, it supports plain text only. ### Can I add images to the note? No, it supports plain text only. ### Does the app support multiple notes? No, it is designed for a single, persistent note. You could try out my [Plain Text Editor](https://sindresorhus.com/plain-text-editor) app for this, which can open multiple files. Also check out [Tot](https://tot.rocks) (not mine, but good). ### How can I make the macOS app show up right below the menu bar icon? Move the window to below the menu bar icon. It remembers its position. ### Can I open and save an external file? No, see my [Plain Text Editor](https://sindresorhus.com/plain-text-editor) app for that. ### Does it support Advanced Data Protection for iCloud? No. The app stores the note in iCloud Drive, which is covered by [Advanced Data Protection](https://support.apple.com/en-us/102651). But it also syncs using [`NSUbiquitousKeyValueStore`](https://developer.apple.com/documentation/foundation/nsubiquitouskeyvaluestore) to be able to support watchOS, and this is not covered by Advanced Data Protection. I also don’t want to commit to Advanced Data Protection support because I could potentially change how syncing works in the future. ### Why doesn’t the app appear in my Dock? By default, it only appears in the menu bar. You can enable the Dock icon in the settings. ### Can it show the text in a widget? No, but check out my [Any Text](https://sindresorhus.com/any-text) app for that. ### Can it show the text in the macOS menu bar? No, but check out my [One Thing](https://sindresorhus.com/one-thing) app for that. ### The text sometimes jumps when I write fast This is a macOS bug. There is unfortunately nothing I can do about it. ### How can I toggle “Stay on Top” with a keyboard shortcut in the macOS app? The keyboard shortcut is listed in the “…” menu. When in menu bar mode, it’s always on top. ### Can you add a color setting? I don’t plan to add that. It’s not essential and I’m trying to keep the app simple. ### Why is it suddenly showing a scrollbar in the macOS app? You either have a system setting set to always show scrollbars or you have an external mouse connected. This is simply how macOS works. You can see the behavior in other text editing apps too. See the “Appearance › Show scroll bars” system setting. ### Why is the scrollbar still white even with window translucency enabled? macOS does not let apps style the scrollbar. Its background remains solid regardless of translucency. ### Why is there no way to print? The app is made using Apple’s latest technologies (SwiftUI) and they have not added print support there yet. If you need to print, copy-paste the text over to TextEdit instead. ### On iOS, the item in the share sheet opens the app, how can I add text to the app in the background? Add [this shortcut](https://www.icloud.com/shortcuts/caa5fd4f5a7240cf951ef9a4184b0522). You can then tap the “Add to Scratchpad” action in a share sheet to add text to Scratchpad in the background. ### What’s the difference between Plain Text Editor and Scratchpad? {#plain-text-editor-comparison} These two apps serve different purposes. [Plain Text Editor](https://sindresorhus.com/plain-text-editor) is a traditional text editor that lives in your Dock and handles multiple documents. It is perfect for working with separate text files and longer writing sessions. Scratchpad is designed for quick notes. It lives in your menu bar (macOS) or Lock Screen/Control Center (iOS) and maintains just one persistent note that syncs across your devices. Think of it as a digital sticky note that’s always one click away. Both apps handle plain text only and work on macOS, iOS, and visionOS (Scratchpad also on watchOS). They’re complementary tools: Plain Text Editor for focused writing with multiple files, Scratchpad for quick, always-accessible note-taking. ### How does this compare to Tot? {#tot} Scratchpad advantages: - Simpler, focused design: A single plain text note for minimal distraction. - iCloud sync is optional. [Tot](https://tot.rocks) does not have a setting to turn off iCloud sync. - More affordable pricing: $8 vs $20 for Tot. - Unlimited note size. Tot is limited to 100,000 characters per dot. - 30+ customizable menu bar icons. - visionOS support. Tot advantages: - Supports 7 notes. - Rich-text support. ## Scripting The app can be automated using the Shortcuts app or with a custom URL scheme. ### Shortcuts app - [Shortcuts usage guide](https://www.xda-developers.com/guide-shortcuts-macos/) - [How to run shortcuts from the command-line on macOS](https://support.apple.com/guide/shortcuts-mac/run-shortcuts-from-the-command-line-apd455c82f02/mac) **Examples** - [*Tell me if you have done anything cool with scripting*](https://sindresorhus.com/feedback?product=Scratchpad&referrer=Website-FAQ) ### Custom URL scheme You can add text to the scratchpad from any tool that can open an URL. This includes a website, Bash, Node.js, Python, Swift, etc. For example, in your terminal: ```sh open --background 'scratchpad:append?text=Hello' ``` By default, the app window shows when this is run. On macOS, you can tell it to not show with the `hide` search parameter: ```sh open --background 'scratchpad:append?text=Hello&hide' ``` You can also prepend: ```sh open --background 'scratchpad:prepend?text=Hello' ``` *Don’t forget to [URL encode](https://www.urlencoder.org) the value for the `text=` search parameter. For example, using [this](https://gist.github.com/cdown/1163649) Bash function.* You can also use the custom URL scheme on iOS. There is no way to get the text using the URL scheme, but you can use Shortcuts for that. I have not included a way to overwrite the text because I don’t want anything to be able to overwrite the scratchpad. If you want this, [tell me your use-case](https://sindresorhus.com/feedback?product=Scratchpad&referrer=Website-FAQ). I may add this with an opt-in setting. For now, you can do it with Shortcuts. ## Older Versions - [1.4.4](https://www.dropbox.com/scl/fi/04rzf69wbgl4jb1ubcjwc/Scratchpad-1.4.4-macOS-26-1792018799.zip?rlkey=k9yr2pl4k8l311vb355ceot5q&raw=1) for macOS 26 - [1.3.7](https://www.dropbox.com/scl/fi/xw6k068700wg41jjt7ens/Scratchpad-1.3.7-macOS-15-1771197879.zip?rlkey=ruqmud5mrvhscs0i6dgeres16&raw=1) for macOS 15 - [1.2.8](https://github.com/user-attachments/files/18575785/Scratchpad.1.2.8.-.macOS.14.zip) for macOS 14 These are free for everyone but they will not run on newer macOS versions. --- # Menu Bar Spacing Customize the gap between menu bar items. URL: https://sindresorhus.com/menu-bar-spacing Fit more items in your MacBook’s menu bar by making the gap between them smaller. On a large display, you can make the gap larger instead. With a single run, the app applies changes permanently, allowing you to fit more apps into the menu bar. Reverting the changes is just as simple, done within the app. > [!WARNING] > This no longer works on macOS 27 as Apple rewrote the menu bar and did not include the requires hidden settings to adjust spacing. There is nothing I can do about this, unfortunately. > [!WARNING] > Because of a [macOS 26 bug](https://github.com/feedback-assistant/reports/issues/679), third-party menu bar apps need to be relaunched before they show the correct spacing. The app includes a Shortcuts action, enabling automated spacing adjustments for various scenarios. **The app only needs to be run once to set the spacing and can then be uninstalled. The settings persist.** This app can potentially replace Bartender/Ice for some users. It also lets you fit more of my [menu bar apps](https://sindresorhus.com/apps/menu-bar) in your menu bar. ![Download count](https://img.shields.io/github/downloads/sindresorhus/menu-bar-spacing-meta/total?color=3e65d0)
> [!TIP] > You may also like my [Spaced](https://sindresorhus.com/spaced) app for grouping menu bar items. ## Frequently Asked Questions {#faq} ### I can already do this from the command-line, why should I use this app? This app makes it simpler and it also makes it possible to see the changes without having to restart your computer first. ### Is it dangerous? No. The changes are easily reversible in the app. ### Do I need to keep the app running? No. You only need to run the app once to apply the changes. ### Is this a replacement for Bartender or Ice? It depends on your needs. If you primarily use those apps to fit more items in the menu bar, this app is a good alternative. ### Can it change the spacing of the left side of the menu bar? No, this is not possible. ### iStat Menus disappeared when I moved the slider Menu Bar Spacing needs to relaunch all menu bar items for changes to take effect. iStat Menus may take a while to relaunch. If it doesn’t reappear, try moving the slider again. Restarting your computer will definitely fix it. ### Can you add more features? No. This app is intentionally simple and focused. ### Can it have per-app configurations? No. It applies globally only. ### Can I have different spacing for when I’m using the built-in display and when using a connected larger display? No, not in the app. However, the app comes with an action for Shortcuts, so you could automate it. Create a shortcut for each display that uses the “Set Menu Bar Spacing” action. Then use Shortcuts automations to run them when a display connects. > [!NOTE] > The setting is global. Changing it will interrupt any ongoing screen recording or sharing, as it restarts some system processes to apply changes immediately. ### Why is this not on the App Store? The app works by changing hidden system settings, which is not allowed on the App Store. ## Older Versions - [1.1.0](https://www.dropbox.com/scl/fi/oicszj1rvnivv0wzqtsi0/Menu-Bar-Spacing-1.1.0-macOS-15-1771443121.zip?rlkey=5v0diy5fwpiut9lysc65ij333&raw=1) for macOS 15+ - [1.0.1](https://github.com/user-attachments/files/18203513/Menu.Bar.Spacing.1.0.1.zip) for macOS 14+ --- # Online Check Online status in your menu bar. URL: https://sindresorhus.com/online-check Check if you are online directly from the menu bar. The menu bar icon turns red when you are offline, and the app can optionally show a notification. Unlike just checking if Wi-Fi is connected, the app verifies actual internet connectivity through network tests. ## Tips #### Connect to other Wi-Fi when status is offline You can have the app connect to a different Wi-Fi if the current one becomes offline. Add [this shortcut](https://www.icloud.com/shortcuts/bf64ec8fd3d24f80b2af845464306614) to the Shortcuts app and edit the required information. Then select this shortcut in the Online Check settings. #### Restart Wi-Fi when status is offline You could also restart the Wi-Fi when it becomes offline. Add [this shortcut](https://www.icloud.com/shortcuts/8bbe914b13ff4f3ab9f063e835c92747). ## Frequently Asked Questions {#faq} ### How is it different from just checking whether the Wi-Fi is connected? A Wi-Fi connection only means you are connected to a network. The app verifies internet access by connecting to “apple.com” or “cloudflare.com”, ensuring you’re truly online. ### The app shows that I’m offline even though I’m not - Ensure network requests from the app to “apple.com” and “cloudflare.com” are not blocked. These domains are used to verify your online status. ### How can I run this only when not connected to certain networks? Create a shortcut in the Shortcuts app to launch and quit this app. Set up a Shortcuts automation with a “Wi-Fi” trigger to run the shortcut based on your Wi-Fi connection status. This allows the app to launch or quit when connecting to or disconnecting from specific Wi-Fi networks. ### How does it work? Every 20 seconds and anytime the network changes, it sends a HEAD request to “apple.com”. If that fails, it sends a HEAD request to “cloudflare.com”. If both requests fail, it considers the internet to be offline. ### Can you make the history persistent? It’s something I’m considering. ### Can you make the menu bar icon green when online? {#green-icon} No. Menu bar icons are intended to be mostly monotone, changing color only to indicate critical states. For example, the battery icon turns red when low but stays monochrome when full. Showing green also isn’t that useful as you can assume it’s connected when not red, and having a constant green color there could be distracting. ## Older Versions - [1.5.0](https://www.dropbox.com/scl/fi/jj4d0jqg9vjvxi75ojigb/Online-Check-1.5.0-macOS-15-1772136482.zip?rlkey=vty9ff9bcz2usxsrurls6tczf&raw=1) for macOS 15 - [1.3.0](https://github.com/user-attachments/files/19074059/Online.Check.1.3.0.-.macOS.14.zip) for macOS 14 These are free for everyone but they will not run on newer macOS versions. --- # Week Number The current week number in your menu bar. URL: https://sindresorhus.com/week-number Always know which week it is. Useful if your work or school plans by week number. **Features** - Week number in the menu bar - Customizable prefix - Find week number for a specific date - Widget
--- Check out [Dato](https://sindresorhus.com/dato) for week number in the menu bar and more features and settings. --- ## Frequently Asked Questions {#faq} ### The week number looks blurry or is not dimmed on my secondary display [See this answer](https://sindresorhus.com/apps/faq#menu-bar-secondary-display) ### Can you add custom week numbering options (for example, fiscal weeks, school terms, or work weeks)? No, the app is intentionally simple. ### Why does it not show week 53? You are probably expecting [ISO week-numbering](https://en.wikipedia.org/wiki/ISO_week_date) while having your system set to [Gregorian week numbering](https://en.wikipedia.org/wiki/ISO_week_date#Relation_with_the_Gregorian_calendar). You can change it with [this system setting](https://apple.stackexchange.com/questions/191445/standard-iso-8601-week-number-in-calendar-app/209340#209340). ### Why does it show the last days of December as week 1? That is called [ISO week-numbering](https://en.wikipedia.org/wiki/ISO_week_date). ### It shows the incorrect week number {#incorrect-week-number} You are probably expecting [ISO week-numbering](https://en.wikipedia.org/wiki/ISO_week_date) while having your system set to [Gregorian week numbering](https://en.wikipedia.org/wiki/ISO_week_date#Relation_with_the_Gregorian_calendar), or the inverse. You can change it with [this system setting](https://apple.stackexchange.com/questions/191445/standard-iso-8601-week-number-in-calendar-app/209340#209340). ### How can I change the week number to ISO 8601 format? Change [this system setting](https://apple.stackexchange.com/questions/191445/standard-iso-8601-week-number-in-calendar-app/209340#209340) to use [ISO 8601](https://en.wikipedia.org/wiki/ISO_week_date) week numbers. ## Older Versions - [1.2.1](https://www.dropbox.com/scl/fi/fb15x1smj4rujjb62wrnz/Week-Number-1.2.1-macOS-15-1769175798.zip?rlkey=zqm0dhna8o4ck7gl9k36e7uwm&raw=1) for macOS 15+ - [1.1.0](https://github.com/user-attachments/files/18203839/Week.Number.1.1.0.zip) for macOS 14+ ## Non-App Store Version A special version for users that cannot access the App Store. It won’t receive automatic updates. I will update it here once a year. [Download](https://www.dropbox.com/scl/fi/4d61fatess5oqykg4hne9/Week-Number-1.3.0-1769172114.zip?rlkey=y8hvpd0sci9zwqqy03i2hu0f5&raw=1) *(1.3.0)* *Requires macOS 26 or later* --- # Icon Preview Preview your app icon and menu bar icon. URL: https://sindresorhus.com/icon-preview Preview how your macOS app icon will look in the Dock and how your menu bar item icon will appear. The icon previews update automatically when the file changes. An essential tool for developers and designers to perfect the look of their macOS app icons. ## Tips #### General - Drag and drop an image onto the Dock icon or menu bar icon to preview it there. - Click the Dock icon to pick an icon. - Right-click the Dock icon while the app is running for more actions. - In Finder, right-click an image file, and select “Open With › Icon Preview” to set it as the Dock icon. To instead set it as the menu bar icon, press the Option key while doing this. #### Preview multiple icons You can utilize the Shortcuts app to display various icons sequentially, each for three seconds. Add [this shortcut](https://www.icloud.com/shortcuts/8824dbd68a8f4dc9a38b850dccd9179e) for app icons or [this one](https://www.icloud.com/shortcuts/72dcea993b1e4b9686003c8e01133c1b) for menu bar icons. Then, navigate to Finder, select the desired icons, right-click, and select “Quick Actions › Preview App Icons”. [Preview](https://x.com/sindresorhus/status/1783036121234165808) #### Sketch integration {#sketch} You can drag an artboard directly from Sketch onto the Dock icon. [Preview](https://x.com/sindresorhus/status/1783399434182955083) There is also a [Sketch plugin](https://github.com/sindresorhus/sketch-icon-preview) that updates the Dock icon automatically when you save. ## Frequently Asked Questions {#faq} ### What image formats are supported for previewing icons? It supports all common image formats like PNG, SVG, PDF, ICNS, and TIFF. ### What are the specifications for designing an app icon? See Apple’s [Human Interface Guidelines](https://developer.apple.com/design/human-interface-guidelines/app-icons). ### What are the specifications for designing a menu bar icon? See [this blog post](https://bjango.com/articles/designingmenubarextras/). ## Older Versions - [1.1.0](https://www.dropbox.com/scl/fi/ryipxav1u9x5lljd7cuc1/Icon-Preview-1.1.0-macOS-15-1764590483.zip?rlkey=r1vrmd3bkv8mrogmy2e9fxf4s&raw=1) for macOS 15+ - [1.0.2](https://github.com/user-attachments/files/18203304/Icon.Preview.1.0.2.zip) for macOS 14+ ## Non-App Store Version A special version for users that cannot access the App Store. It won’t receive automatic updates. I will update it here once a year. [Download](https://www.dropbox.com/scl/fi/qz25ebardzubedros2p1y/Icon-Preview-1.2.0-1764590537.zip?rlkey=8ty3u35x9rprn7ectqm0mcwaz&raw=1) *(1.2.0)* *Requires macOS 26 or later* --- # Floating Clock The missing clock for Apple Vision. URL: https://sindresorhus.com/floating-clock Display a digital clock anywhere in your space. The app is simple by design. ## Frequently Asked Questions {#faq} ### Can it support showing an analog clock? No plans to support that. ### Can it show seconds? No plans to support that. ### Can it show the year? The year is omitted for simplicity; it’s generally known. ### Can you support macOS? I plan to do this at some point, but I cannot say when. ### Can you localize the app into my language? I don’t plan to localize the app, but the time and date respect your locale. --- # Doodle Draw Quick and easy drawing pad. URL: https://sindresorhus.com/doodle-draw Open the app and start drawing. For quick sketches, brainstorming, and doodles, without setting anything up first. The app is intentionally simple. ## Frequently Asked Questions {#faq} ### I can already access these drawing tools in the Notes and Freeform app This app makes it faster to get started. Just tap the app and start doodling. It also lets you save or erase more quickly. Great for quick brainstorm sessions. ### How can I undo? Tap the undo button, shake the device, or swipe left with three fingers. ### Can I zoom in and out? There is no zoom functionality. The app is designed for straightforward, full-canvas doodling. ### Can I draw on an existing image? This is not supported. ### Can you support shape detection? Apple does not let third-party apps use the shape detection functionality, so this is not possible. ### Why can I only use a single hand when drawing on the visionOS version? This is a visionOS bug. ### Can you support macOS? Unfortunately not possible as the framework used for drawing is too limited on macOS. --- # Second Clock Show a second clock for a different time zone in your menu bar. URL: https://sindresorhus.com/second-clock The clock sits next to the system clock, so you always know the time for colleagues, family, or servers in another time zone. The app is simple by design. Check out [Dato](https://sindresorhus.com/dato) for more features and settings or [UTC Time](https://sindresorhus.com/utc-time) if you just need the time in UTC. ## Frequently Asked Questions {#faq} ### The app does not show up in the menu bar macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender/Ice if you have it installed. ### The time looks blurry or is not dimmed on my secondary display [See this answer](https://sindresorhus.com/apps/faq#menu-bar-secondary-display) ### Can it show a flag in front of the time? You can set a [flag emoji](https://emojipedia.org/flags) in the “Prefix text” setting. [Example.](https://x.com/sindresorhus/status/1742975880031543330) ### Can it show an icon in front of the time? You can set a [Unicode character](https://www.vertex42.com/ExcelTips/unicode-symbols.html) or SF Symbol in the “Prefix text” setting. For an SF Symbol, download the [SF Symbols app](https://developer.apple.com/sf-symbols/), copy a symbol, and paste it into the “Prefix text” setting. ### Can it show seconds? No, but you can make the system clock show seconds. ### Can it show the date? No. Check out my [Dato](https://sindresorhus.com/dato) app for that. ### Can it show an analog clock? I have no plans to support that. ### What if I want more than one additional clock? I don’t plan to support that directly, but here are additional builds of the app with different identifiers so they can all run at the same time: - [Second Clock 2](https://www.dropbox.com/scl/fi/jp9vx3xqrfocpcpb9psnx/Second-Clock-2-1754956993.zip?rlkey=yfxracofur29b258y7aeb5850&raw=1) - [Second Clock 3](https://www.dropbox.com/scl/fi/8p3cvjfpg1fd9gq1apsgi/Second-Clock-3-1754957017.zip?rlkey=3a66fig1j223nio1znv81vji9&raw=1) - [Second Clock 4](https://www.dropbox.com/scl/fi/5v77qrgvwg2cyjxjnanjw/Second-Clock-4-1754957043.zip?rlkey=mxapcbqy7famt3srngb9agyf4&raw=1) - [Second Clock 5](https://www.dropbox.com/scl/fi/cds0pdm6qpuanqs7pcooz/Second-Clock-5-1754957062.zip?rlkey=f4anp3pfe8mrtahlpsycn66c4&raw=1) - [Second Clock 6](https://www.dropbox.com/scl/fi/ul7kevyvte8anl2f7mbi2/Second-Clock-6-1754957087.zip?rlkey=h4koh48yg49f50pskl6c9rm33&raw=1) *Requires macOS 15 or later* *If you had downloaded this previously and it stopped respecting the chosen time zone, download the new versions above.* My [Dato](https://sindresorhus.com/dato) app supports multiple time zone clocks with settings like color and size. My [Zone Bar](https://sindresorhus.com/zone-bar) app also supports multiple time zone clocks. ### Can you add text weight and color settings? This is not planned. The menu bar should generally be monochrome (no colors) and consistent (same text weight). ### Can you localize the app into my language? The time output adheres to your locale. I don’t plan to localize the app itself. ## Older Versions - [1.1.0](https://www.dropbox.com/scl/fi/8q5rzafvwh8h38nw162m8/Second-Clock-1.1.0-macOS-15-1774272407.zip?rlkey=3m3t78o84kfaaaxv9khdscuii&raw=1) for macOS 15+ - [1.0.2](https://github.com/user-attachments/files/18694293/Second.Clock.1.0.2.-.macOS.14.zip) for macOS 14+ ## Non-App Store Version A special version for users that cannot access the App Store. It won’t receive automatic updates. I will update it here once a year. [Download](https://www.dropbox.com/scl/fi/9a20p7mo6bdw45xqzl1a8/Second-Clock-1.2.0-1774271996.zip?rlkey=udacl6dtg5apz9guctolox1tu&raw=1) *(1.2.0)* *Requires macOS 26 or later* --- # Memo Widget Sticky notes on your Home Screen, Lock Screen, and desktop. URL: https://sindresorhus.com/memo-widget Write a short note and see it as a sticky note on your Home Screen, Lock Screen, StandBy, or desktop. The app is simple by design. For macOS, it’s only available for Apple silicon Macs running macOS 26 or later. ## Frequently Asked Questions {#faq} ### How do I add the widget? - [iOS](https://support.apple.com/HT207122) - [macOS](https://support.apple.com/guide/mac-help/mchl52be5da5/mac) ### The widget does not show up in the widget picker, the widget is stuck, or is missing from the Home Screen The iOS widget system is quite buggy and can fail a lot. This is not a problem with the app and out of my control. See [how to fix a widget that does not show up](https://sindresorhus.com/apps/faq#widget-not-showing). ### Can you add more features and settings? I’m happy to consider it, but I also want to keep the app simple. Check out my [Any Text app](https://sindresorhus.com/any-text), which has a lot more features. ### Can you add a text size setting? The text size is large for short text but scales down to make the text fit. I don’t want to complicate it with a text size setting. If you really need it, check out [Any Text](https://sindresorhus.com/any-text). ### Can you add a text color setting? Same answer as the above. ### Can I edit text directly in the widget? No. Widgets cannot have interactivity like that. This is a macOS/iOS limitation. ### How is this different from the built-in Stickies app on macOS? {#stickies} The Stickies app is a normal app and has to either float on top of everything or it has to be manually brought to the front when needed. Memo Widget always lives on your desktop or in the Notification Center, just a [gesture away](https://www.howtogeek.com/678073/how-to-quickly-show-your-desktop-on-mac/). The Stickies app also takes up space in your Dock. The Stickies app supports formatting, while Memo Widget keeps it simple with just plain text. ### Can I make the widget horizontally centered on the Lock Screen? This is unfortunately not possible. Apple has decided that the rectangular widget can only appear on the left or right side. ### Can I pick a color for the text on the Lock Screen? Lock Screen widgets cannot have colors. You can set a custom text color for the normal widgets though. ### Can I pick a background color for the Lock Screen widgets? Same answer as the above. ### The widget does not update if I write some text in the app and then reveal the Lock Screen You need to first close the app. This is an iOS bug. If you work at Apple → [FB11522275](https://github.com/feedback-assistant/reports/issues/360) ### The widget does not update even if I do the above The app tells iOS to update the widget, unfortunately, iOS can decide to delay an update for various reasons (low battery, low-power mode, etc). This is completely out of my control. ### The Lock Screen widget does not show the text after restarting the device, before unlocking it This is an iOS limitation and is out of my control. It shows a placeholder until the first unlock. This is how all Lock Screen widgets work. ### Can you add actions for Shortcuts? I don’t plan to add this. Check out my [Any Text app](https://sindresorhus.com/any-text), which has this. ### Can you make the widget background transparent? This is not possible. ### Can you support syncing the widget with iCloud? Currently, there are no plans to integrate iCloud syncing due to its complexity and the potential for increased support queries. ### How is this different from your Any Text app? [Any Text](https://sindresorhus.com/any-text) has a lot of features and is very flexible. With this app, I wanted to make something simple and focused. --- # AI Actions AI actions for the Shortcuts app. URL: https://sindresorhus.com/ai-actions The app provides additional AI-related actions (GPT, Claude Sonnet/Opus, etc.) for the Shortcuts app. For example, an action to interact with the ChatGPT API. > [!NOTE] > The app requires you to specify your own OpenAI / Anthropic API key. > Note that ChatGPT Plus or an Anthropic paid account does not give you free API access. Your API key is securely stored in your keychain, not in a shortcut. It also supports many more models through [Ollama and Groq](https://sindresorhus.com/ai-actions#alternative-providers). > [!NOTE] > The macOS version on the App Store requires an Apple silicon Mac. For Intel Macs, use the [non-App Store version](https://sindresorhus.com/ai-actions#non-app-store-version). > *(This is because Apple only accepted the iOS version and not the macOS version, so on macOS, the iOS version of the app is used, which only runs on Apple silicon Macs)*
> [!TIP] > You may also like my [Actions](https://sindresorhus.com/actions) app. ## Tips #### Ollama and Groq support {#alternative-providers} The app also supports [Ollama](https://ollama.com/blog/openai-compatibility) (local models like GGUF) and [Groq](https://console.groq.com/docs/openai) (because they have OpenAI API compatibility), making it possible to use it with a lot more models. The app sends requests to the base URL with `/v1/chat/completions` appended. For example, `https://openrouter.ai/api` becomes `https://openrouter.ai/api/v1/chat/completions`. If the server uses a custom port, include it in the base URL (e.g., `https://my-server:8080`). For Ollama, set the “Base URL” to `http://localhost:11434` (or the network address of your Ollama instance). Since Ollama doesn’t require authentication, just enter any text (e.g., `ollama`) as the OpenAI API key. In the “Ask AI” action, select the “Custom” model and provide the name of the desired model (e.g., “llama3”). For Groq, specify `https://api.groq.com/openai`. In the “Ask AI” action, select the “Custom” model and provide the name of the desired model. For OpenRouter, specify `https://openrouter.ai/api`. For [llama.cpp](https://github.com/ggml-org/llama.cpp/tree/master/tools/server), specify the server address with its port (e.g., `http://localhost:8080`). For [Open WebUI](https://openwebui.com), specify the address of your instance with `/api` appended (e.g., `https://my-server/api`), and use an Open WebUI API key as the API key. For [Gemini](https://ai.google.dev/gemini-api/docs/openai), specify `https://generativelanguage.googleapis.com/v1beta/openai/`. In the “Ask AI” action, select the “Custom” model and provide the name of the desired model. ## Frequently Asked Questions {#faq} ### The actions do not show up in the Shortcuts app This is an iOS/macOS bug. Launch the app once and then restart your device. If that doesn’t work, [try this.](https://webtrickz.com/third-party-lock-screen-widgets-not-showing-ios-16/) ### Why are these actions not just part of your Actions app? Apple prevents any app that includes AI-related functionality from being available in China. I didn’t want the [Actions](https://sindresorhus.com/actions) app to be unavailable in China just because of one action. ### How is this better than the “Ask ChatGPT” action provided by the official ChatGPT app? This one works on macOS too, supports longer text, has customizability options for power-users, and will support more AI APIs in the future. ### How is this better than just calling the OpenAI API directly from Shortcuts? This makes it simpler, but more importantly, it stores your API key securely in the keychain. This means you can share your shortcuts with others without exposing your API key. The API key is not stored in the shortcut. ### Can you support the OpenAI Whisper API? No, the Whisper API isn’t suitable for this app due to Shortcuts’ 30-second limit on third-party actions on iOS, making long transcriptions impossible. Instead, use my app [Aiko](https://sindresorhus.com/aiko). It runs Whisper locally on your device and supports Shortcuts by performing transcriptions in the foreground, bypassing the time constraint (on macOS, it runs in the background). ### Can you add built-in support for the Google Gemini API? {#gemini} No. I don’t want to keep adding more providers, and I especially don’t want to take on Google-specific APIs and auth quirks. More providers means a larger API surface, more edge-cases, and more maintenance. Workaround: Gemini already offers an OpenAI-compatible endpoint, which this app supports. Set the Base URL to `https://generativelanguage.googleapis.com/v1beta/openai/`, then choose “Custom” and enter the Gemini model name. You can also use an OpenAI-compatible proxy like [OpenRouter](https://openrouter.ai) if you prefer one unified endpoint. ## Older Versions - [1.5.1](https://www.dropbox.com/scl/fi/z45d2f7ngiyc3t7qrbo4f/AI-Actions-1.5.1-macOS-26-1791816899.zip?rlkey=orqginnmip2anbb6jvw2xhi1n&raw=1) for macOS 26+ - [1.4.5](https://www.dropbox.com/scl/fi/o80d948mabpohlip3je6m/AI-Actions-1.4.5-macOS-15-1769233269.zip?rlkey=lgxnxyzv75g6r82b4c3fitwuz&raw=1) for macOS 15+ - [1.3.3](https://github.com/user-attachments/files/18376675/AI.Actions.1.3.3.-.macOS.14.zip) for macOS 14+ ## Non-App Store Version A special version for users that cannot access the App Store. It won’t receive automatic updates. I will update it here once a year. [Download](https://www.dropbox.com/scl/fi/kmzufw5hv2we46ae9kcn2/AI-Actions-1.5.2-1791817015.zip?rlkey=117s2j2y3zhelr7vv05g6w8ov&raw=1) *(1.5.2)* *Requires macOS 27 or later* --- # One Task Conquer one task at a time. URL: https://sindresorhus.com/one-task Show a single task on your Home Screen, Lock Screen, or desktop. Add some tasks to the app and then add the widget. Simply tap the widget to mark the task as completed. The next task will then appear. The simplicity is a feature. The app will not have things like folders, tags, priority, notes, etc. The optimal workflow in One Task is to add only the tasks you’re committed to completing today. The app is designed for task completion, not endless organization and neglect. It syncs tasks over iCloud. Note that the macOS version has an issue where it doesn’t sync while being the active window (macOS bug). It’s a [Universal Purchase](https://sindresorhus.com/apps/faq#universal-purchase).
> You can achieve almost anything in life — as long as you focus on achieving one thing at a time. It’s a time-tested strategy that’s been shared by many successful people. — [https://dariusforoux.com/one-thing/](https://dariusforoux.com/one-thing/)
## Tips ### Import tasks from other todo apps You can quickly import tasks from other todo apps by copying the tasks from such apps into One Task with the “Tasks: Paste” button. For example, on macOS, select the tasks you want in Reminders or Things, right-click and copy them, and then paste them into One Task using the “Tasks: Paste” button. ## Frequently Asked Questions {#faq} ### How is this different from your One Thing app? {#one-thing-difference} [One Thing](https://sindresorhus.com/one-thing) is a minimalist note app that sits in the menu bar, displaying a single piece of text like a sticky note. In contrast, One Task is a task management tool that lets you queue multiple tasks, check them off upon completion, and view them one at a time, with a strong emphasis on widgets. While both apps share a focus on simplicity, One Thing is designed for quick, single-note access, whereas One Task is geared towards managing multiple tasks with a more structured approach, similar to the difference between the Notes app and Reminders app. ### iCloud syncing does not work [Troubleshooting.](https://sindresorhus.com/apps/faq#icloud-sync) Known issue: - Because of a macOS bug, the macOS app does not sync with iCloud while it’s focused. ### How can I edit an item? Swipe right on the item. On macOS, you can also right-click the item. ### Does the app integrate with other todo apps? No, One Task deliberately avoids automatic integration with other todo apps. Most todo apps encourage task hoarding, leading to overwhelm and inaction. One Task focuses on actionable items you commit to completing within the day. Manually select your highest-priority tasks and add them to One Task for focused execution. ### Does the app support recurring tasks? {#recurring-tasks} No. I want to keep this app super simple. However, you can achieve this using the Shortcuts app. Create a [shortcut](https://support.apple.com/guide/shortcuts/welcome/ios) that uses the “Add Task” action to add the tasks you want to be recurring. Then create an [automation](https://support.apple.com/guide/shortcuts/apdfbdbd7123/7.0/ios/17.0) to run the shortcut at a certain interval. For example, every morning. ### Does the app support task templates? {#task-templates} No, but you can achieve this using the Shortcuts app. Modify [this shortcut](https://www.icloud.com/shortcuts/51edae78b820457a89d12715a053fac6) and run it every time you want to apply the template tasks. You could even add the shortcut to the Home Screen. ### Why doesn’t the app have folders, tags, or priorities? One Task is designed for action, not endless categorization. It omits features like folders, tags, and priorities to eliminate distractions and decision fatigue. The app’s core functionality is to help you commit to and complete tasks today. ### How can I turn off iCloud syncing? {#turn-off-sync} - **macOS:** Go to “System Settings › Apple Account › iCloud › Saved to iCloud” and turn off One Task. - **iOS:** Go to “Settings › Apple Account › iCloud › Saved to iCloud” and turn off One Task. It will erase your existing items, so you may want to first back them up with “Tasks: Copy” in the app. ### Can you add a widget setting to choose background color? I don’t plan to add this. I want to keep the app super simple. ### Can I choose any color for the menu bar text on macOS? {#menu-bar-text-color} The picker only offers system colors, not a freeform color. System colors automatically adapt to stay readable on both light and dark menu bars, while a fixed custom color could become unreadable when the menu bar background changes, for example with a dynamic wallpaper or when switching between light and dark mode. ### The menu bar text looks blurry or is not dimmed on my secondary display [See this answer](https://sindresorhus.com/apps/faq#menu-bar-secondary-display) ### Can you make the widget background transparent? This is not possible. ### The text in the widget is quite large The text automatically scales down to fit more content. ## Older Versions - [1.6.1](https://www.dropbox.com/scl/fi/pw69xu9uuzhso36bpxobt/One-Task-1.6.1-macOS-15-1774212569.zip?rlkey=8qiv99b2xuhbl7emqfseesyf3&raw=1) for macOS 15 - [1.5.4](https://github.com/user-attachments/files/18549490/One.Task.1.5.4.-.macOS.14.zip) for macOS 14 These are free for everyone but they will not run on newer macOS versions. --- # Menu Bar Calendar A monthly calendar, one click away. URL: https://sindresorhus.com/menu-bar-calendar Click the menu bar icon to see a monthly calendar. Click a date to open it in the Calendar app or Google Calendar, or right-click a day to create an event. The app is intentionally simple. Check out [Dato](https://sindresorhus.com/dato) for more features and settings. The calendar displays dates and days in your language, but the rest of the app is in English. ## Tips - **Go to today (current month):** Click the month name or press the space key. - **Switch months:** Press arrow keys or swipe horizontally on the calendar. - **Switch years:** While holding the option key, click the `‹` / `›` button, press arrow keys, or swipe horizontally on the calendar. - **Close calendar window:** Press the esc key. - **Open date in the Calendar app (or Google Calendar):** Click a date in the calendar. - **Open week in the Calendar app (or Google Calendar):** Click a week number in the calendar. - **Go to a specific date:** Right-click the month name or press G. - **Create new event on a specific day:** Right-click the day in the calendar. - **Copy the date for a day in the calendar:** Right-click the day in the calendar. ## Frequently Asked Questions {#faq} ### Does it show calendar events? No. That is outside the scope of the app. My [Today](https://sindresorhus.com/today) (free) and [Dato](https://sindresorhus.com/dato) (paid) apps have that. ### Does it support highlighting certain days of the week? No. Check out my [Dato](https://sindresorhus.com/dato) app for that. The app does support dimming the weekend though. ### Does it include widgets? No. Check out my [Dato](https://sindresorhus.com/dato) app for that. ### Does it support showing a time in the menu bar with a custom format? No. Check out my [Dato](https://sindresorhus.com/dato) app for that. ### Does it have a 3-month view? No. ### Why does it not show week 53? You are probably expecting [ISO week-numbering](https://en.wikipedia.org/wiki/ISO_week_date) while having your system set to [Gregorian week numbering](https://en.wikipedia.org/wiki/ISO_week_date#Relation_with_the_Gregorian_calendar). You can change it with [this system setting](https://apple.stackexchange.com/questions/191445/standard-iso-8601-week-number-in-calendar-app/209340#209340). ### Why does it show the last days of December as week 1? That is called [ISO week-numbering](https://en.wikipedia.org/wiki/ISO_week_date). ### It shows the incorrect week number You are probably expecting [ISO week-numbering](https://en.wikipedia.org/wiki/ISO_week_date) while having your system set to [Gregorian week numbering](https://en.wikipedia.org/wiki/ISO_week_date#Relation_with_the_Gregorian_calendar), or the inverse. You can change it with [this system setting](https://apple.stackexchange.com/questions/191445/standard-iso-8601-week-number-in-calendar-app/209340#209340). ### How can I change the week number to ISO 8601 format? Change [this system setting](https://apple.stackexchange.com/questions/191445/standard-iso-8601-week-number-in-calendar-app/209340#209340) to use [ISO 8601](https://en.wikipedia.org/wiki/ISO_week_date) week numbers. ### Can it open Zoho Calendar instead of Apple/Google Calendar? {#zoho} No. Zoho Calendar does not support opening to a specific date via URL, so this integration is not possible. You can, however, [sync your Zoho Calendar to the macOS Calendar app](https://www.zoho.com/calendar/help/setup-caldav-sync.html) and then use the “Show in Calendar” click action. ### How can I open Google Calendar in a specific browser? Use my [Velja app](https://sindresorhus.com/velja). You can create a rule to open any link clicked in this app in your chosen browser. ### How can I scroll to switch months? You can swipe horizontally to switch months. If you don’t have a trackpad, there are [apps](https://mybyways.com/blog/configure-a-mouse-for-macos-trackpad-like-gestures) that let you make scrolling trigger swipe. ## Older Versions - [1.6.2](https://www.dropbox.com/scl/fi/cta1rtf4fe7w68m6id7jc/Menu-Bar-Calendar-1.6.2-macOS-15-1774301589.zip?rlkey=wqdq2zmtxgn2lcppf6za2js4f&raw=1) for macOS 15+ - [1.4.1](https://www.dropbox.com/scl/fi/ldlznw1f2oo04i6j2hcnt/Menu-Bar-Calendar-1.4.1-macOS-14-1737700069.zip?rlkey=arklgyyq4k9dcodg1sq1us65n&raw=1) for macOS 14+ - [1.2.0](https://github.com/sindresorhus/meta/files/13922546/Menu.Bar.Calendar.1.2.0.-.macOS.13.zip) for macOS 13+ ## Non-App Store Version A special version for users that cannot access the App Store. It won’t receive automatic updates. I will update it here once a year. [Download](https://www.dropbox.com/scl/fi/up9hlj2ooxxarugsusr69/Menu-Bar-Calendar-1.7.1-1781624290.zip?rlkey=5k0n02u6gwqm94gd8mvezgqxx&raw=1) *(1.7.1)* *Requires macOS 26 or later* --- # Day Progress Time remaining today in your menu bar. URL: https://sindresorhus.com/day-progress See how much of your day or workday is left, as a progress pie or bar in your menu bar. A small nudge to use the time well. You can customize your day’s start and end times per day, even allowing for a day’s end past midnight, such as 2 AM. You can set up multiple time ranges to run one after another throughout your day. The menu bar shows a single progress at a time. Perfect for tracking different parts of your day like work hours and personal time. Choose between a progress pie or bar, showing percentage, remaining time, or minutes left. ## Tips ### Reminder about shortcuts A shortcut can be run from the menu bar, using a global keyboard shortcut, from Spotlight, or from Raycast. You can use Shortcuts automations to make it run automatically, for example, when you change to the work focus. For more automation triggers, you can use [Shortery](https://apps.apple.com/us/app/shortery/id1594183810?mt=12). ### Hide the system clock {#hide-system-clock} You could use Day Progress as an abstract clock instead of the system clock, to minimize anxiety and distraction from time, enhancing focus and productivity. Unfortunately, it’s not possible to fully hide the built-in menu bar clock. However, you could make it an analog clock, which makes it a lot less visible. In “System Settings › Control Center › Clock Options”, choose the analog clock and disable showing the date. ### Events The [distributed notification](https://sindresorhus.com/apps/faq#distributed-notifications) `com.sindresorhus.Day-Progress.dayEnded` is emitted when a progress finishes. ## Frequently Asked Questions {#faq} ### The menu bar item looks blurry or is not dimmed on my secondary display [See this answer](https://sindresorhus.com/apps/faq#menu-bar-secondary-display) ### Can you add widgets? I plan to do that at some point, but I cannot say when. ### Can you add support for iOS? I plan to do that at some point, but I cannot say when. ### Can you support more countdown ranges, like until the end of the week or a certain date? There are already lots of apps for counting down to a specific date. I wanted to make something more unique. Also, the app name is “Day Progress”. ### Can you support specifying different day ranges for different days of the week? You can set up multiple schedules with different time ranges, both for different days and within the same day. Each time range runs its progress one after another in the menu bar. For even more flexibility, use the “Set Duration Schedule” and “Set Duration Enabled” actions in the Shortcuts app. ### Does the app provide end-of-day notifications? At this time, the app doesn’t support this. Considering the wide-ranging user preferences of notifications, from system alerts to fullscreen notifications and differing “do not disturb” settings, I’ve opted to keep the app straightforward and not include notifications for now. ### Can you add Pomodoro features? This is outside the scope of the app. Day Progress is meant as a general day progress indicator, not a task timer. There are many dedicated Pomodoro apps available in the App Store. ### Can it show a progress bar for how much time I have left in my life? This is out of scope for this app, and there are existing apps for that already. ## Older Versions - [2.0.3](https://www.dropbox.com/scl/fi/mntravypnb9a11938lk28/Day-Progress-2.0.3-macOS-15-1775397609.zip?rlkey=gjl8jl22miwb9csldzdpd8786&raw=1) for macOS 15 - [1.4.0](https://github.com/user-attachments/files/18767518/Day.Progress.1.4.0.-.macOS.14.zip) for macOS 14 - [1.3.0](https://github.com/sindresorhus/meta/files/13979415/Day.Progress.1.3.0.-.macOS.13.zip) for macOS 13 These are free for everyone but they will not run on newer macOS versions. --- # Camera Preview Preview your webcam and take photos. URL: https://sindresorhus.com/camera-preview Check your hair and lighting before a video call. Click the menu bar icon to see your Mac’s camera, and press Return to take a photo. ## Tips - Press the Return or Space key while showing the camera feed to take a photo. - Press Command+ to zoom in, Command− to zoom out, and Command+0 to reset the zoom. - Press the Option key while resizing the window to resize from the center (this works with any app). ## Frequently Asked Questions {#faq} ### The app does not work {#not-working} - Ensure you are on the latest version. - Restart your computer. - Try [resetting permissions](https://sindresorhus.com/apps/faq#mac-reset-permissions). ### Can you add support for making the camera feed a circle? I don’t plan to add that. I plan to make a separate app specifically for showing the camera on presentations and screencasts, which will have this feature. ### Can it float over fullscreen apps? Yes, when in menu bar mode. ### How is this better than Photo Booth? {#photo-booth} - Convenient access from the menu bar. - Toggle it via a keyboard shortcut. - Higher quality camera output. - Does not crop the camera output. - Minimalistic design with no window frame. - Takes photos without the countdown. - Photos are saved to the file system, not hidden inside the app. - The window can be made to always stay on top of other windows. - Can be accessed from the menu bar. - Capture and copy photo in a single action. - Save photo as lossless PNG file. - Includes camera metadata (EXIF) in the saved photo. - Made by an indie developer that listens to users. ### How is this better than QuickTime? {#quicktime} - Shows the camera faster. One click instead of multiple. - Convenient access from the menu bar. - Toggle it via a keyboard shortcut. - Remembers window size and position. - Takes photos. - The window can be made to always stay on top of other windows. - Capture and copy photo in a single action. ### What resources are used when the app is in the menu bar? When the camera window is closed or minimized, the camera is turned off. The app consumes approximately 40 MB of RAM and 0% of CPU when running in the background. ### Do you plan to add background removal? I don’t have any immediate plans for this. Maybe in a year when AI background removal has progressed further. ### Do you plan to add filters? No. ### Can it record video? No. That’s outside the scope of this app. You can use the built-in QuickTime Player app for that. ## Older Versions - [1.7.7](https://www.dropbox.com/scl/fi/dhbgwns59on2uw6zb4uql/Camera-Preview-1.7.7-macOS-15-1772349679.zip?rlkey=yhusqz0f82kdaovk2exod1w3j&raw=1) for macOS 15 - [1.6.1](https://github.com/user-attachments/files/18385375/Camera.Preview.1.6.1.-.macOS.14.zip) for macOS 14 - [1.4.0](https://github.com/sindresorhus/meta/files/13988612/Camera.Preview.1.4.0.-.macOS.13.zip) for macOS 13 These are free for everyone but they will not run on newer macOS versions. --- # Command X Cut and paste files in Finder. URL: https://sindresorhus.com/command-x Cut and paste files and folders in Finder with Command+X and Command+V, instead of copying (Command+C) and then remembering to move (Option+Command+V). Known limitation: You cannot cut the name of a file when editing a filename in Finder or cut when using the search field. [Learn more.](https://sindresorhus.com/command-x#textfield-limitation) ### Mentions - [Review by Softpedia](https://mac.softpedia.com/get/System-Utilities/Command-X.shtml) - [10 Mac Apps That Will Change How You Use macOS in 2026](https://www.youtube.com/watch?v=LtuUwACZdsQ&t=426s)
> [!TIP] > You may also like my [Supercharge](https://sindresorhus.com/supercharge) app which has an [improved implementation](https://sindresorhus.com/command-x#textfield-limitation) of this. ## Frequently Asked Questions {#faq} ### Why? I can already use Option+Command+V - It’s more logical to cut & paste than copy & move. - Consistency and muscle memory benefits if you also use Linux or Windows. ### The app does not work {#not-working} First try relaunching the app. If that doesn’t help, try restarting your computer. Then, make sure you pressed Command+X and not Command+C. To make sure you used the app correctly, try this: Select a file in Finder, press Command+X, change to a different folder, press Command+V. The file should have been moved to this new folder. **Note:** You cannot cut, highlight a folder, and then paste. You have to actually go into the folder to paste to it. That’s just how Finder works. Same with copy-pasting. **It could also be that certain apps (password managers and browsers) are [interfering with the app](https://sindresorhus.com/apps/faq#secure-input-problem).** If still not working, try closing down all apps and menu bar items, just to rule out some other app interfering. Then try toggling the setting “Use more reliable way of handling Command+X”, and try the above steps again. If it works then, please report it to me. If it’s still not working, try this: Select a file in Finder, press Command+C, change to a different folder, press Option+Command+V. The file should have been moved to this new folder. If this did not work, the problem is not this app, as those are the keyboard shortcuts it simulates. If it’s a work computer, your company may have something installed that prevents the app from working. Try uninstalling and reinstalling the app, and restart your computer. If it’s still not working, try re-granting access: 1. Open “System Settings › Privacy & Security › Device Control and Data Access” 2. Remove Command X from the list 3. Quit and reopen Command X 4. Grant accessibility access when prompted *Note: “Device Control and Data Access” is “Accessibility” on macOS 26 and lower.* The last thing you could try is to reset the permissions. Either use [App Buddy](https://sindresorhus.com/app-buddy), or quit the app, and run this in the Terminal app: ```sh tccutil reset All com.sindresorhus.Command-X ``` To help me figure out the issue, make sure the “Use more reliable way of handling Command+X” setting is enabled, press Command+X and Command+V in Finder, click the “Copy Debug Info” button in the Command X menu bar menu, and then [send the debug info to me](https://sindresorhus.com/feedback?product=Command%20X&referrer=Website-FAQ), including a short explanation of what didn’t work. ### How does the app work? The app works by overriding the normal cut ⌘X keyboard shortcut when Finder is active and executes a copy ⌘C instead. When you then paste ⌘V, it executes the native move ⌥⌘V keyboard shortcut. So really, it’s Finder moving the files. This app just makes the keyboard shortcuts more intuitive. ### Is there any risk of data loss if I forget to paste? No. The files are not touched until you paste. If you don’t paste, the files just stay in place. ### Can I move files by clicking the “Paste” menu item? No, you can only use the keyboard shortcuts. The app works by overriding the original keyboard shortcuts. There is no way to override the Finder menu items. ### Can it make the cut files in Finder have less opacity? This is not possible. The app works by overriding some key combinations. It doesn’t and cannot modify Finder in any way. ### Can I change the volume of the cutting sound? The cutting sound is a macOS system sound effect, so its volume follows the alert volume in “System Settings › Sound”. The sound also requires “Play user interface sound effects” to be enabled there. ### It does not work when I try to paste directly to an expanded subfolder shown in its parent folder This is a Finder bug. You can reproduce it even without Command X by selecting the file to move, pressing Command+C, selecting the destination folder, and then pressing Option+Command+V. ### It does not work when I try to paste into a folder in column view where the parent is a tag Same as the above. ### I am not able to cut text when editing a filename in Finder {#textfield-limitation} This is a known issue that is unfortunately not fixable. The app works by overriding the normal cut keyboard shortcut when Finder is active, which also affects cutting text in a filename. There is no way to differentiate between cutting a file and cutting text in a filename in Finder. The main reason this is not possible is because of restrictions ([sandboxing](https://sindresorhus.com/apps/faq#macos-sandbox)) imposed on apps on the App Store. My [Supercharge](https://sindresorhus.com/supercharge) app has the Command X feature without this rename limitation because it’s not on the App Store. ### I am not able to cut text in the search field in Finder Same as the above. ## Older Versions - [1.6.2](https://www.dropbox.com/scl/fi/90rakqppxdnryctolu9rc/Command-X-1.6.2-macOS-15-1775377612.zip?rlkey=hwh8im5sol3bnc7chqjursf7a&raw=1) for macOS 15 - [1.4.7](https://github.com/user-attachments/files/19031153/Command.X.1.4.7.-.macOS.14.zip) for macOS 14 - [1.3.1](https://github.com/sindresorhus/meta/files/13987707/Command.X.1.3.1.-.macOS.13.zip) for macOS 13 These are free for everyone but they will not run on newer macOS versions. --- # QuickGPT Easy access to ChatGPT. URL: https://sindresorhus.com/quickgpt Open ChatGPT in its own window with a keyboard shortcut, from the menu bar, or from the Dock. It uses the ChatGPT website, with some design tweaks, and you can add your own CSS and JavaScript. **Features** - Access from menu bar, Dock, or with a keyboard shortcut - Stay on top of other windows - Launch at login - Design tweaks to the ChatGPT web UI - Add custom CSS and JavaScript ## Frequently Asked Questions {#faq} ### Why this when ChatGPT has an official macOS app? The web version (used by this app) sometimes gets features before the macOS app. This app is just a browser, so it has a lot less access to your system than the official ChatGPT app, so better for privacy conscious people. This app supports tabs (as long as you have enabled the “prefer tabs” system setting) ### Is the app native? It is a native app with a web view. It adds a lot of extra functionality to the ChatGPT web UI. ### Why does it add a newline when pressing the Return key instead of submitting the prompt? This is a bug in ChatGPT. It changes behavior when the window is narrow (sidebar becomes hidden). It happens in Safari too. I recommend reporting this bug to the [ChatGPT team](mailto:support@openai.com). ### Can you add a certain feature? I’m happy to consider it. If it’s about the web interface, I recommend also [sending a request](mailto:support@openai.com) to the ChatGPT team. ### Can you fix a bug in the ChatGPT web interface? I have fixed many bugs in the ChatGPT web interface in the past. However, they constantly change the web interface, which breaks my fixes. It’s just too much wasted time. Send bug reports to the [OpenAI team](mailto:support@openai.com) instead. ### Can you support the ChatGPT API? I personally prefer the ChatGPT web UI as it’s cheaper for me to pay monthly for unlimited use than to pay per token for the API. ### Why is this not in the App Store? Apple generally rejects website wrappers even if they add useful additional functionality. Apple has also rejected apps with GPT in the name. ## Older Versions - [1.7.0](https://www.dropbox.com/scl/fi/qvl6941nju5c3k6tz21w0/QuickGPT-1.7.0-macOS-15-1771093340.zip?rlkey=za1y4gew5d3tecaq4ygwzmgsw&raw=1) for macOS 15 - [1.5.2](https://github.com/sindresorhus/sindresorhus.github.com/releases/download/v1.0.0/QuickGPT.1.5.2.-.macOS.14.zip) for macOS 14 - [1.4.11](https://github.com/sindresorhus/meta/files/14156246/QuickGPT.1.4.11.zip) for macOS 13 These are free for everyone but they will not run on newer macOS versions. --- # Ask AI Use ChatGPT right on your watch. URL: https://sindresorhus.com/ask-ai Ask [ChatGPT](https://en.wikipedia.org/wiki/ChatGPT) a question and get the answer right on your Apple Watch, without taking out your phone. Have it explain a topic, translate a phrase, recommend something, solve a math problem, or improve your writing. The app is in English, but you can ask questions in many languages, including: English, Spanish, French, German, Chinese, Japanese, Korean, Portuguese, Italian, Russian, Arabic, Dutch, Swedish, Norwegian, Danish, Finnish, Turkish, Hebrew, Hindi, Bengali, Thai, Greek, Polish, Romanian, Ukrainian, Vietnamese, Indonesian, Malay, Swahili, Tagalog, Tamil, Kannada, Telugu, Marathi, Gujarati, Punjabi, and Nepali. The app uses one of the fast [GPT models](https://platform.openai.com/docs/models) from OpenAI. #### Technical details The app uses OpenAI’s official ChatGPT API. I have to pay for every question, but the app is a one-time purchase since I hate subscriptions. I sure hope I estimated the price correctly 🤣 ## Frequently Asked Questions {#faq} ### I bought the app on my iPhone/iPad but it does not show up on my watch This is a bug in the App Store. App developers have no control over the install process of apps. Try restarting your watch and if it still does not show up, go into the App Store on your watch and download it there. You will not have to pay again. ### Can it open the voice dictation directly at launch? This is unfortunately not possible as watchOS only supports opening the keyboard. ### Can I choose a voice? The app automatically uses the best voice for the language used in the answer. Unfortunately, the high-quality Siri voices are not available for apps to use. ### Can I launch it with the action button? Add [this shortcut](https://www.icloud.com/shortcuts/6b890da159844407a6b39de454567c97) to one of your Apple devices (not the watch), and then on the watch, select the shortcut in the action button configuration. ### Can you support iOS and macOS too? Unfortunately, it is unlikely that the app will be available on iOS and macOS. The pricing of the app is based on its expected lifetime usage, and since I am charged for the amount of usage, the cost would be much higher on iOS. For macOS, check out [QuickGPT](https://sindresorhus.com/quickgpt). --- # Aiko AI-powered audio transcription. URL: https://sindresorhus.com/aiko Turn recordings of meetings, lectures, and voice memos into text. The transcription runs on your device, so your audio is never uploaded. The transcription is powered by OpenAI’s [Whisper model](https://openai.com/research/whisper) running locally on your device. The app also includes [support for Shortcuts](https://sindresorhus.com/aiko#tips). It’s a [Universal Purchase](https://sindresorhus.com/apps/faq#universal-purchase).
Supports audio in 100 languages *Some languages have worse quality than others. Try the trial first.* - Afrikaans - Albanian - Amharic - Arabic - Armenian - Assamese - Azerbaijani - Bangla - Bashkir - Basque - Belarusian - Bosnian - Breton - Bulgarian - Burmese - Catalan - Chinese - Croatian - Czech - Danish - Dutch - English - Estonian - Faroese - Finnish - French - Galician - Georgian - German - Greek - Gujarati - Haitian Creole - Hausa - Hawaiian - Hebrew - Hindi - Hungarian - Icelandic - Indonesian - Italian - Japanese - Javanese - Kannada - Kazakh - Khmer - Korean - Lao - Latin - Latvian - Lingala - Lithuanian - Luxembourgish - Macedonian - Malagasy - Malay - Malayalam - Maltese - Marathi - Mongolian - Māori - Nepali - Norwegian - Norwegian Nynorsk - Occitan - Pashto - Persian - Polish - Portuguese - Punjabi - Romanian - Russian - Sanskrit - Serbian - Shona - Sindhi - Sinhala - Slovak - Slovenian - Somali - Spanish - Swahili - Swedish - Tagalog - Tajik - Tamil - Tatar - Telugu - Thai - Tibetan - Turkish - Turkmen - Ukrainian - Urdu - Uzbek - Vietnamese - Welsh - Yiddish - Yoruba
#### Privacy Aiko transcribes audio directly on your device, ensuring complete privacy. It’s perfect for sensitive recordings. #### Technical details The app uses the Whisper large v2 model on macOS and the medium or small model on iOS depending on available memory. ## Trial @Trial(url: "https://testflight.apple.com/join/P1qnhHCC", title: "Try on TestFlight") { Try Aiko free for 14 days with TestFlight. It’s the full app, no limitations. No auto-charges or commitment. Simply purchase it from the App Store after the trial if you want to continue using it. } *If you get asked for a code, just click the above link again instead.* *Disregard where it says how many days there are left. It means the days left of the current TestFlight build, not how long you have left on your trial.* ## Tips ### Divide text into paragraphs Aiko divides the transcription text by sentences. If you want the text divided into paragraphs, copy the text from Aiko, go to [ChatGPT](https://chat.openai.com), and use the following prompt. `Divide the text into paragraphs. Don't change the text otherwise: TRANSCRIPTION TEXT` ### Fix missing punctuation A flaw of the Whisper model is that transcriptions can sometimes be missing punctuation. Try setting the “Prompt” setting to, for example: > Hello. I like cake. If that still doesn’t fix it, try copying the text from Aiko, go to [ChatGPT](https://chat.openai.com), and use this prompt: `Fix the missing punctuation. Don't change the text otherwise: TRANSCRIPTION TEXT` ### Batch transcribe {#batch} Aiko does not yet support batch transcription built-in, but you can achieve it with shortcuts. Get [this (iOS)](https://www.icloud.com/shortcuts/f790a41e23ae4222920277b4fe9d1217) or [this (macOS)](https://www.icloud.com/shortcuts/0be44e478b9e472192cae2e0dfc327ed) shortcut and then share the audio files you want to transcribe (e.g. from Voice Memos or Files/Finder) and choose the shortcut in the share sheet. You can also run the shortcut directly from the Shortcuts app or even add the shortcut to the Home Screen. ### Transcribe files directly in Finder On macOS, you can transcribe files simply by right-clicking audio files in Finder and choosing [this shortcut](https://www.icloud.com/shortcuts/d03bb8e17513432190a1ed711f99d423) (add it first) in “Quick Actions”. [Preview.](https://x.com/sindresorhus/status/1789957043912093954) In the shortcut you can choose whether you want text or subtitles. ### Record and transcribe by pressing the iPhone action button [This](https://www.icloud.com/shortcuts/62a62ef967b74ffb897d72ee6a881746) shortcut records, transcribes, and then shows the result in the Aiko app. Save the shortcut and then select it in the action button settings. If you want to record, transcribe, and then do something with the transcription in your shortcut workflow, check out [this shortcut](https://www.icloud.com/shortcuts/00198bd63c094540ba25fe066245319d). You could, for example, pass the transcription to the ChatGPT shortcut action for further processing. ### Quickly record and transcribe (iOS) Do the same as the above, but instead add the shortcut to the Home Screen (can be done in the shortcut settings). ### Quickly record, transcribe, and add transcription to the Notes app (iOS) Use [this shortcut](https://www.icloud.com/shortcuts/806ab945539d42acb79354805c50d9d5). ### Quickly record and transcribe (macOS) You can use [this shortcut](https://www.icloud.com/shortcuts/e43220d72f3343659e0fda36fee52d72) to be able to quickly record, transcribe, and have the result copied to the clipboard. The shortcut can be triggered from the menu bar or you can set a global keyboard shortcut for it. ### Start recording in Aiko when tapping the Home Screen icon [Get this shortcut](https://www.icloud.com/shortcuts/7c3031aa674c405fa69093d1f6c184a6) and add it to the Home Screen. Then tap it instead of the original Aiko app icon. ## Frequently Asked Questions {#faq} ### Can you use the large v3 model for the Mac app? The v3 model is [worse](https://github.com/openai/whisper/discussions/1762#discussioncomment-7532295) than v2 in too many cases. I tried releasing v3, but got a lot of emails about the quality being worse, so I ended up reverting it. ### Can you add support for v3 turbo? I have plans to look into it, but it’s not something I have time to prioritize right now. It cannot be the default model as it’s worse than v2. Which means, I will need to add support for downloading models, which is a huge amount of work. ### Can you include the large model on iOS? Even the latest iPhone is not powerful enough to run the large model. It can maybe be done when the [Whisper Distilled](https://github.com/huggingface/distil-whisper) project supports multiple languages. ### Can you support the new Apple SpeechTranscriber API? Probably not initially, as the [SpeechTranscriber API](https://developer.apple.com/documentation/speech/speechtranscriber) has some problems: - New Apple APIs are always super buggy - Only 10 languages - No automatic language detection - Whisper still has higher quality Maybe when it’s more mature. ### The screen turned off during transcription The app tells the system not to turn off the screen. However, if you have enabled “low power mode”, the system may do so anyway. Try turning it off. ### Can I edit the text in the app? I don’t plan to support any editing. Export the transcription and edit it in a proper text editor. ### How is this better than the built-in transcription on Apple devices? - Much better accuracy. - Support for more languages. - Transcribe audio and video files. - Export to many different formats, like JSON, CSV, and subtitles. ### I found a mistake in the transcription The app uses the OpenAI Whisper model and I have no control over the quality of its output. You could provide feedback about the problem [here](https://github.com/openai/whisper/discussions/categories/general). ### My language is not in the list of supported languages. Can you support it? I have no control over the supported languages. You could try to request it [here](https://github.com/openai/whisper/discussions/categories/general). ### The transcription repeats itself many times This is unfortunately a flaw in the Whisper AI model and out of my control. This is usually caused by the audio not being clean (for example, a lot of background noise). Some things you could try: - Restart your device. - Try enabling the “Skip silent parts” setting. - Try enabling the “Reduce repetitions” setting. - Try enabling the “Reduce repetitions even more” setting. - If you don’t need timestamps, you can disable them being produced, which can sometimes reduce repetitions. Triple-tap on the “Translate to English” text in the settings and then disable the “Produce timestamps” setting. ### The transcription is missing punctuation This is unfortunately a flaw in the Whisper model. [Workaround.](https://sindresorhus.com/aiko#tips) ### The transcription includes a sentence at the end that was not in the audio This is unfortunately a flaw in the Whisper model. It can sometimes add a sentence like “Thanks for watching!” to the end. There is not much I can do about this. Workaround: Try enabling the “Skip silent parts” setting. This issue arises from quirks in the AI’s processing, where it sometimes generates off-topic content, often due to data remnants or misinterpreted context. These are not messages or ‘whispers’ with any underlying meaning; they’re random anomalies that OpenAI is actively working to correct. ### The transcription is not in the same language as the source audio Ensure the "Translate to English" setting is disabled. The language used in the "Prompt" setting may also affect the transcription language. ### Can it transcribe audio with multiple languages? Not reliably. The [Whisper AI model](https://github.com/openai/whisper) used by the app detects one language from the start of the audio and transcribes everything as that language, so parts in another language may come out translated. Writing a sentence that mixes the languages in the “Prompt” setting can sometimes help. ### The transcription is in Traditional Chinese while the audio was in Simplified Chinese or the inverse The [Whisper AI model](https://github.com/openai/whisper) used by the app does not differentiate between Traditional Chinese and Simplified Chinese, so the result could unfortunately end up with either. [Learn more.](https://github.com/openai/whisper/discussions/277) Try writing a sentence in Traditional Chinese or Simplified Chinese in the “Prompt” setting in the app to steer the model into using the right one. ### Why must I keep the iOS app open while it transcribes? iOS apps are fundamentally restricted from operating in the background for extended periods. This ironically even [affects Apple’s official apps](https://x.com/bzamayo/status/1661133704792621059). ### What file formats does it support? Any audio and video format that macOS and iOS supports. For example: `.m4a`, `.wav`, `.mp3`, `.mp4`, `.mov`. It does not support `.ogg`. ### Can I get both the original transcription and the English translation at the same time? No, the AI model processes either transcription or translation, not both simultaneously. You need to run the process twice: once for the original transcription, and again with the “Translate to English” setting enabled. ### Where can I find the audio recordings? The audio recordings can be found in the “Aiko” folder in the Files app. ### How can I delete audio recordings? Recordings are not automatically deleted after transcription. **macOS:** Click “File › Show Recent Recordings” in the menu bar to open the recordings folder in Finder. Delete them from there. **iOS:** Open the Files app and navigate to the “Aiko” folder. You can also enable “Auto-delete recordings older than 7 days” in settings. ### When trying to import an audio file, I get error -50 The error comes from iOS and means that it could not read the audio file. Sometimes [converting](https://apps.apple.com/app/id1081480270) the audio file to a different format, like MP3, resolves the issue. ### How can I transcribe audio from the Voice Memos app? **macOS:** Drag and drop the memo into the Aiko window. Note that because of a macOS bug, this can sometimes crash Aiko. If this happens, try sharing the memo from the Voice Memos app to Aiko instead. **iOS:** In the Voice Memos app, tap the memo, tap the `…` button, tap `Share`, and choose Aiko in the app list. **iOS 26:** Sharing from Voice Memos is broken due to an iOS bug. See [workaround](https://sindresorhus.com/aiko#voice-memos-ios26). ### Sharing from Voice Memos does not work on iOS 26 {#voice-memos-ios26} This is caused by an iOS 26 bug outside of my control. As a workaround, you can use a shortcut that appears in the Voice Memos share sheet: 1. Install [this shortcut](https://www.icloud.com/shortcuts/343553f2aff44c0fb1c7974a969ae4bb). 1. In Voice Memos, share the recording. 1. Look for **Transcribe with Aiko** in the share sheet. If you don’t see it, scroll to the end of the app row and tap `Edit Actions`. 1. If it’s still not listed, open the Shortcuts app, tap the **Transcribe with Aiko** shortcut, tap the `ⓘ` button, and enable “Show in Share Sheet”. ### Why does it take so long to generate? Several factors can affect the transcription speed, including the performance of your device and the amount of available memory and CPU. Try closing down other apps or restarting your device before transcribing. That being said, it’s likely Aiko will become significantly faster in the coming months. ### Why does the app take up so much space on disk and memory? The app delivers the highest quality transcription on the market for 100 different languages. Rather than asking why it’s so large, the real question is how is it so small. ### The app is overheating my device The role of the operating system (iOS/macOS) is to effectively manage the system’s resources and to safeguard against overheating. Apps are designed to utilize as many resources as they need to function optimally. In the event that resource consumption reaches a point that threatens to overheat the device, it’s the operating system’s job to limit such usage automatically. If your device is experiencing overheating while using the app, it’s important to understand that the issue likely originates either from the operating system’s inability to manage resources effectively, or from an underlying hardware problem. In either case, the app itself is not responsible for the overheating. ### Can I delete some of the languages to save space? This is unfortunately not possible. The model has all the languages stored together in a way that makes it impossible to remove just some languages. ### Can you support real-time transcription? This is something I plan to look into, but I have more popular requests I need to prioritize first. ### Can you support naming the people in the audio? {#diarization} This is called [Diarization](https://en.wikipedia.org/wiki/Speaker_diarisation). It’s something I would like to support, but it has to first be [implemented in the library](https://github.com/ggml-org/whisper.cpp/issues/64) the app uses. ### How can I transcribe a Zoom meeting? {#zoom} The app does not yet support live transcription, but you could record the Zoom meeting, and after the meeting is finished, drop the recording into the Aiko window to transcribe. ### How can I transcribe a Messages voice note? {#messages} Drag and drop the voice note into Aiko. [How to drag and drop on iPhone.](https://www.imore.com/how-use-drag-and-drop-iphone) ### How can I transcribe a Telegram voice note? {#telegram} Telegram voice notes are stored in the format [Ogg](https://en.wikipedia.org/wiki/Ogg), which macOS/iOS cannot handle. Workaround for iOS: 1. Download [this app](https://apps.apple.com/app/id889643660). 2. In Telegram, share the voice note to “Audio Converter”. 3. Select “AAC” as output format and tap the convert button. 4. Tap the share button and then choose Aiko. Workaround for macOS: 1. Download [this app](https://apps.apple.com/app/id1081480270) 2. In Telegram, right-click the voice note and save it. 3. Open the saved voice note with the “Audio Converter” app. 4. Select “AAC” as output format and tap the convert button. 5. Save the converted file and open it with Aiko. *I would also recommend sending feedback to Telegram that they should support M4A for voice notes.* ### How can I export the transcription as subtitles (SRT)? When the transcription is done, click the save button in the toolbar, and choose “SRT”. ### How can I transcribe a YouTube video? Download the audio using a service like [dirpy](https://dirpy.com) or the macOS app [Downie](https://software.charliemonroe.net/downie/) and then open the file in Aiko. This cannot be supported built-in as downloading videos from YouTube is against their Terms of Service and Apple would likely reject such a feature. ### The app supports translating to English, can it support more languages? The translation support is built into the AI model and it only supports translating to English. You could copy-paste the result into ChatGPT or Google Translate. ### How can I trigger Aiko with a custom URL scheme? Aiko does not have a custom URL scheme, but you can trigger Aiko from the Shortcuts app, and the Shortcuts app does have a [custom URL scheme](https://support.apple.com/guide/shortcuts/run-a-shortcut-from-a-url-apd624386f42/ios). ### What is Flash Attention? {#flash-attention} Flash Attention is a special technique that helps the app process audio more efficiently while using less memory on your device. Think of it as a smarter way to handle the heavy lifting of transcription. It’s a setting in case it causes any problem. It should not though. ### How can I change the app icon on macOS? {#change-icon} You can do it manually for free. See [this guide](https://www.macstories.net/tutorials/customizing-app-icons-on-a-mac-in-2023/). You can also use the [Replaceicon](https://replacicon.app) app (paid). ### How can I get back the old robot icon? {#old-icon} **iOS:** There is a setting for it in the app. **macOS:** Unlike iOS, macOS does not have the ability to have alternative icons. See the above FAQ. [Here’s the old app icon.](https://www.dropbox.com/scl/fi/rr8hizeqejfz0pg5yll7f/Aiko-1772609366.png?rlkey=v5frkozme3iairlshont7vxhd&raw=1) ### How is Aiko pronounced? IPA (International Phonetic Alphabet): `[a.i.ko̞]` English approximation: `ah-ee-ko` ### Is the app native? Yes, it’s native and written in Swift and SwiftUI. ## Older Versions - [1.10.1](https://drive.google.com/file/d/1nC9W-IdVhYw0rdokLoiGK18VsMLWyet7/view?usp=sharing) for macOS 15 - [1.8.2](https://drive.google.com/file/d/1ZKZ5P17Pvv4CYuBtkfDe5cuJw46S1HoE/view?usp=sharing) for macOS 14 - [1.5.3](https://drive.google.com/file/d/15NOcj4fyX58I3_NlQyCziL87Ru89yFRx/view?usp=sharing) for macOS 13 These are free for everyone but they will not run on newer macOS versions. --- # Hyperduck Send links from your iOS & visionOS devices to your Mac. URL: https://sindresorhus.com/hyperduck Share a link from Safari on your iPhone, iPad, or Apple Vision, and it opens in the default browser on your Mac moments later. You can send a link even if your iOS/visionOS device and/or Mac is offline. The link will be sent and received the next time the devices are online. The link will never be lost. My personal use-case is that I often discover cool stuff when I check X (Twitter) on the go and I want to dig deeper into it later on my Mac. I have tried Instapaper, Pocket, Safari Reading List, iCloud Tabs, and more. The problem with them all is that I forget to check them. > [!IMPORTANT] > Sends to one Mac only. Install the macOS app on the single Mac you want to receive links on. If you install it on multiple Macs, iCloud may deliver a link to any of them, unpredictably. [**Why not AirDrop?**](https://sindresorhus.com/hyperduck#airdrop) [Review by MacStories](https://www.macstories.net/reviews/automation-april-hyperduck-leverages-the-power-of-url-schemes-to-control-your-mac-from-an-iphone-or-ipad/) [Video review by MacRumors](https://www.youtube.com/watch?v=XiLSieZ5b2c&t=486s) #### Privacy The app uses iCloud syncing to securely send links from your iOS/visionOS device to your Mac. The app developer will not see the links you share. The app does not collect any personal data and does not have any tracking. ## Troubleshooting - If the “Send to Mac” button is not showing up in share sheets, you may have to enable it at the bottom of the share sheet with the “Edit Actions” button. You may even have to restart your device for it to show up (iOS bugs…). - Ensure Hyperduck is running on the Mac. - Hyperduck opens links in the background. Ensure you didn’t miss it. - Try opening the Hyperduck iOS app to force a sync. - In the iOS app, if you triple-tap the text, it will show the most recently shared URLs, which may aid debugging. Also check the history in the macOS app. - For a few users, initial sync took up to 24 hours due to weird iCloud syncing behavior. - This is controlled by Apple’s iCloud system and outside the app’s control. - [More…](https://sindresorhus.com/apps/faq#icloud-sync) ## Tips ### Run shortcuts {#shortcuts} You can use this app to trigger [shortcuts](https://support.apple.com/guide/shortcuts/welcome/ios) on your Mac from your iOS devices. This enables a lot of powerful use-cases. For example, you could make your Mac play a specific song directly from your iPhone. First, create a shortcut on your Mac with some actions. Let’s call it `Unicorn`. On your iOS device, make a new shortcut, add the “Run Shortcut on Mac” action, and write `Unicorn` in the shortcut field. You can now run this shortcut on your iOS device to trigger the `Unicorn` shortcut on your Mac. [Learn more](https://www.macstories.net/reviews/automation-april-hyperduck-leverages-the-power-of-url-schemes-to-control-your-mac-from-an-iphone-or-ipad/) in the Hyperduck review by MacStories. ### Shut down Mac You can use the Shortcuts support mentioned above to shut down your computer remotely from your iOS device. Just follow the above steps and use the “Shut Down” action (requires macOS 13.3) in the Shortcuts app or the AppleScript action with the following: `tell app "System Events" to shut down`. ### Trigger Raycast deeplinks {#raycast} Similar to the above, we can use a [Raycast deeplink](https://developers.raycast.com/information/lifecycle/deeplinks). For example, on your iOS device, make a new shortcut, add the “Send URLs to Mac” action, and in the URL field, write: ``` raycast://confetti ``` You can now trigger confetti to show up on your Mac from your iPhone. ### Send a link to a specific browser profile Create an [iOS shortcut that triggers a macOS shortcut](https://sindresorhus.com/hyperduck#shortcuts) and set it to appear in the share sheet. In the macOS shortcut, use the “Open URLs” action from my [Velja](https://sindresorhus.com/velja) app to open the URL in a specific browser profile. - [Example iOS shortcut](https://www.icloud.com/shortcuts/a00ac5bb31294084936fbd4dd6ca0245) - [Example macOS shortcut](https://www.icloud.com/shortcuts/d39c57b67ed343d58192a899841d6457) ### Send a link to a specific Mac {#send-to-specific-mac} Instead of using the “Send to Mac” share sheet button provided by the app, you can make a [shortcut](https://sindresorhus.com/hyperduck#shortcuts) for each Mac you want to send to and put those shortcuts in the share sheet. Add these shortcuts (on any device): - [iOS shortcut](https://www.icloud.com/shortcuts/f013c4a6da7d4a9eb0694f0a6532f34c) - [macOS shortcut](https://www.icloud.com/shortcuts/e164558aa759486ca70553f32029fe40) *(requires the [Actions](https://sindresorhus.com/actions) app to be installed)* Then edit the macOS shortcut to match the device name of the device you want this to share to. You can rename the macOS shortcut, but don’t forget to update the name in the iOS shortcut. To support more Macs, repeat the process for each Mac. ### Download a file on your Mac from your iOS device You can use Hyperduck to trigger a download from your iOS device and have it downloaded on your Mac. Add the below [shortcuts](https://sindresorhus.com/hyperduck#shortcuts): - [iOS shortcut](https://www.icloud.com/shortcuts/4819a11f4d0b40228df7ffd737b34c3d) - [macOS shortcut](https://www.icloud.com/shortcuts/d319976dd4cf441780f6abcb049a3cff) You can then tap “Download on Mac” in the share sheet on your iOS device, and the item will be downloaded on your Mac to the “Downloads” folder. ## Frequently Asked Questions {#faq} ### How is it better than AirDrop? {#airdrop} - Works when your Mac is turned off - Works when you are not near your Mac - Much faster - Opens links on your Mac in the background - AirDrop sometimes refuses to work; this always works. ### How is it better than iCloud Tabs? {#icloud-tabs} - Works in any app with a share sheet, not just Safari - Links are opened as tabs in your browser so you cannot miss them - No need to spend time looking for the link in a long list of links - Supports any browser on your Mac - You don’t need to keep the tab open on your iOS device for it to be available on your Mac ### How is it better than Safari Tab Groups? {#safari-tab-groups} - Works in any app with a share sheet, not just Safari - Supports any browser on your Mac - You don’t need to keep the tab open on your iOS device for it to be available on your Mac ### How is it better than Safari Reading List? {#safari-reading-list} - Links are opened right in your browser so you cannot miss them - No need to spend time looking for the link in a long list of links - Supports any browser on your Mac ### How is it better than remembering the URL and typing it out on your Mac? - Works with every human - Does not strain fingers and brain ### How is it better than Handoff? {#handoff} - Works in any app with a share sheet, not just a browser - Works when your Mac is turned off - Works when you are not near your Mac - Supports any browser on your Mac - Opens links on your Mac in the background - The link opens automatically. Handoff requires clicking the Dock icon to open it. - Handoff sometimes refuses to work. This always works. ### How is it better than Universal Clipboard? {#universal-clipboard} Compared to [Universal Clipboard](https://support.apple.com/HT209460): - No need to manually paste the link into the browser after copying it on your iOS device - Works when your Mac is turned off - Works when you are not near your Mac - Much faster ### How is it better than sending yourself links with iMessage? {#imessage} - Links are opened right in your browser so you cannot miss them (it’s easy to forget to check iMessage) - Opens links on your Mac in the background ### How is it better than sending yourself links with email? {#email} - Links are opened right in your browser so you cannot miss them (it’s easy to forget to check your email) - Opens links on your Mac in the background - Does not litter your email inbox with lots of random links ### How is it better than Pushbullet? {#pushbullet} - Works in any app with a share sheet - [Pushbullet](https://www.pushbullet.com) does not have an iOS or macOS app - Does not require signing up for another account ### How is it better than the Firefox Send Tabs feature? Compared to the Firefox [Send Tabs](https://support.mozilla.org/kb/send-tab-firefox-ios-another-device) feature: - Works in any app with a share sheet, not just Firefox - Supports any browser on your Mac - Requires fewer taps ### How is it better than the Firefox tab sync? - Works in any app with a share sheet, not just Firefox - Supports any browser on your Mac - You don’t need to keep the tab open on your iOS device for it to be available on your Mac ### Can it open links in a specific browser or browser profile on my Mac? {#custom-browser} You can use my [Velja app](https://sindresorhus.com/velja) for this. Create a custom rule where you set Hyperduck as the source app. [It’s not possible to open in Safari profiles.](https://sindresorhus.com/velja#safari-profiles) ### The link did not open on my Mac right away The app works by syncing the link over iCloud from your iOS device to your Mac. This is usually instantaneous, but there can be situations that delay it (iCloud problems, network issues, Low Power Mode, etc). This is unfortunately completely out of my control. ### I don’t see the “Send to Mac” action in the share sheet Try restarting your device. Because of an iOS bug, it sometimes only appears after a restart. ### The “Send to Mac” button does not appear when viewing a PDF file in Safari Safari tries to share the PDF file itself, not the URL to the PDF, and Hyperduck can only handle URLs. Instead, go back, long-press the link to the PDF, and tap “Share”. ### I use the Arc browser and I am not receiving all links The Arc browser does not support opening multiple URLs at a time. I suggest sending feedback to the Arc team about this. There is nothing Hyperduck can do about it. As a workaround, you could use my [Velja app](https://sindresorhus.com/velja) to make such links open in a different browser. Create a custom rule where you set Hyperduck as the source app and set the destination app to a different browser than Arc. ### Can Hyperduck lose a shared link if my internet goes down? No. Hyperduck stores your link in iCloud, ensuring it’s available until successfully opened on your Mac, regardless of your internet connection quality. ### Can you add a history screen to the iOS app? I don’t plan to add this. I would like to keep the app focused on one thing and do it well. The app is for sending links from iOS to Mac. That’s it. If you really need to see what URLs were shared, you can triple-tap on the text in the iOS app to get a list of recently shared URLs. ### Can you support multiple Macs? No. I would like to keep the app simple. However, you could [do it with Shortcuts](https://sindresorhus.com/hyperduck#send-to-specific-mac). ### Can you support the reverse (Mac to iOS)? {#reverse} No. I’m not planning to support it. There is just not enough demand and it would make the app much more complicated. Also, it would not be possible to open the URL directly in the browser like it does on macOS, so the experience would not be great. ### Can you support sending from one Mac to another? No. I’m not planning to support it. It would add a lot of complexity for a very niche use-case. ## Older Versions - [1.4.0](https://www.dropbox.com/scl/fi/wqls608ta9gjhwobx7aob/Hyperduck-1.4.0-macOS-15-1775553315.zip?rlkey=s148zdqjfhjqki7bcxscvvo1v&raw=1) for macOS 15 - [1.2.3](https://github.com/user-attachments/files/18591073/Hyperduck.1.2.3.-.macOS.14.zip) for macOS 14 - [1.0.7](https://github.com/sindresorhus/meta/files/14292936/Hyperduck.1.0.7.-.macOS.13.zip) for macOS 13 These are free for everyone but they will not run on newer macOS versions. --- # Spaced Organize your menu bar items into groups. URL: https://sindresorhus.com/spaced Add separators to your menu bar, so related items sit together in groups. It is particularly beneficial on larger screens where menu bar space is ample, as opposed to smaller laptop screens with limited space.
> [!TIP] > You may also like my [Menu Bar Spacing](https://sindresorhus.com/menu-bar-spacing) app for changing the gap between menu bar items. ## Frequently Asked Questions {#faq} ### The spacer positions are not saved after restarting {#position-not-saved} Spacer positions are saved and restored by macOS, not the app. Menu bar manager apps like Bartender, Ice, and Thaw are known to interfere with this. Try quitting any such app and see if positions are then saved correctly. ### Can the app let me hide and show menu bar items? That is out of scope for this app. You want something like [Bartender](https://www.macbartender.com) or [Hidden Bar](https://apps.apple.com/no/app/hidden-bar/id1452453066?mt=12). ### Can you support more separator characters and wider spacers? {#custom-separator} Already supported, but hidden for now because of a macOS alignment bug with characters padded by spaces. Hold Shift+Option while clicking the menu bar icon to be able to specify custom separator. ### Can the app support changing the distance between menu bar items? You can do that with my [Menu Bar Spacing](https://sindresorhus.com/menu-bar-spacing) app. ### Can the app also support grouping icons in the Dock? You can do that with my [Supercharge](https://sindresorhus.com/supercharge) app. ## Older Versions - [1.2.0](https://www.dropbox.com/scl/fi/r3hd7t0uki292tblm91i5/Spaced-1.2.0-macOS-15-1774259497.zip?rlkey=rxpji2s1o2uo68tbt8e7d5xym&raw=1) for macOS 15+ - [1.1.1](https://github.com/user-attachments/files/18212917/Spaced.1.1.1.-.macOS.14.zip) for macOS 14+ - [1.0.4](https://github.com/sindresorhus/meta/files/13852708/Spaced.1.0.4.-.macOS.13.zip) for macOS 13+ ## Non-App Store Version A special version for users that cannot access the App Store. It won’t receive automatic updates. I will update it here once a year. [Download](https://www.dropbox.com/scl/fi/spty4pij7c9geahzhzubx/Spaced-1.3.0-1774258825.zip?rlkey=fboyvze8lg2boa5fcs3kai0rr&raw=1) *(1.3.0)* *Requires macOS 26 or later* --- # Amazing AI Generate images from text using Stable Diffusion. URL: https://sindresorhus.com/amazing-ai Describe the image you want, and the app makes it for you. It runs locally on your device. **Note:** It uses Stable Diffusion 1.5, which is flexible, but it requires a detailed description to generate a usable image. > [!WARNING] > On macOS, the app is developed exclusively for Apple silicon. It is NOT compatible with devices running on Intel chips.\ > On iOS, it requires at minimum an iPhone 15 Pro or iPad with an M1 processor. > [!TIP] > Check out my [Imago](https://sindresorhus.com/imago) app, which uses Flux 2 instead — a much better model. [Stable Diffusion](https://en.wikipedia.org/wiki/Stable_Diffusion) is a deep learning, text-to-image model used to generate detailed images conditioned on text descriptions. The app is [highly optimized](https://machinelearning.apple.com/research/stable-diffusion-coreml-apple-silicon) and runs on the [Apple Neural Engine](https://apple.fandom.com/wiki/Neural_Engine). ## Tips ### Preview Click a thumbnail to view a larger version of it. Click again to exit. ### Negative prompt To write a [negative prompt](https://en.wikipedia.org/wiki/Stable_Diffusion#Text_to_image_generation) (what to exclude), write `##` after your prompt, followed by your negative prompt. For example, “photo of a cake, high-quality ## strawberry, out of frame”, where `strawberry, out of frame` is your negative prompt. Anything after the `##` is your negative prompt. You only write `##` once. ### Keyboard shortcuts On macOS, when in preview mode, there are some keyboard shortcuts available: - ◀ — Previous image - ▶ — Next image - Space — Save image - Command+C — Copy image - Esc — Exit preview ### Metadata On macOS, when you save a generated image, it includes a lot of useful metadata (prompt, steps, etc). You can [view this in Finder](https://x.com/sindresorhus/status/1611441129622278146/photo/1) by right-clicking the image file and selecting “Get Info”. The file also includes some relevant tags which can be used to create [smart folders](https://support.apple.com/guide/mac-help/tag-files-and-folders-mchlp15236/mac). ## Frequently Asked Questions {#faq} ### Why not use Stable Diffusion 3? When I tried it, it gave worse results than 1.5. For a better model, check out my [Imago](https://sindresorhus.com/imago) app. ### Why does the app require Apple silicon for Macs? The app takes advantage of recent [optimizations by Apple](https://machinelearning.apple.com/research/stable-diffusion-coreml-apple-silicon). ### Why does the app require at least iPhone 15 Pro and iPad M1? Generating images with Stable Diffusion requires a lot of system resources. It would not be a good experience on older devices. It could probably run fine on iPhone 15 and iPhone 14 Pro, but Apple does not let us do such a fine-grained requirement. Either I require these devices, or I have to support all devices that can run the app, including those that are not nearly powerful enough. ### What are the usage restrictions for the generated images? You can use the images for commercial or non-commercial purposes, but you must adhere to the [Creative ML OpenRAIL-M license’s usage restrictions](https://github.com/CompVis/stable-diffusion/blob/21f890f9da3cfbeaba8e2ac3c425ee9e998d5229/LICENSE#L69-L82). These restrictions include not using the images for illegal activity, false information, discrimination, or medical advice. ### Can you support custom models? I don’t plan to support this. This app is intentionally simple. There are many other apps that support custom models. ### Can you support inpainting/outpainting? I don’t plan to support this. [DiffusionBee](https://diffusionbee.com) supports this (see below for comparison). ### Can it generate images with aspect ratios other than a square? The Stable Diffusion library used by this app only supports squares. ### Why can it not generate adult images? The app would not be allowed on the App Store if it allowed creating such images. ### Why does it take so long to generate? Several factors can affect the speed of image generation, including the performance of your device and the amount of available memory and CPU. Try closing down other apps or restarting your device before generating images. And bear in mind that the initial generation after installing the app may take longer due to model validation. ### Why does the app take up so much space on disk and memory? The AI model used to generate images is large. This is reasonable given the model’s capabilities. ### How does it compare to DiffusionBee? {#diffusionbee} **Amazing AI benefits** - Faster and more energy-efficient as it uses the [Apple Neural Engine](https://apple.fandom.com/wiki/Neural_Engine) and recent [macOS optimizations](https://machinelearning.apple.com/research/stable-diffusion-coreml-apple-silicon) - Native user interface (DiffusionBee is a web app wrapped with Electron which does not follow platform conventions) - Batch generation of different prompts (DiffusionBee supports batch for the same prompt only) - Shortcuts support - Automatic upscaling (DiffusionBee requires you to manually click an upscale button for each image) - Sandboxed (More secure) - Available on the App Store **[DiffusionBee](https://github.com/divamgupta/diffusionbee-stable-diffusion-ui) benefits** - Inpainting - Outpainting - Image-to-image - Custom models ## Older Versions - [1.6.0](https://github.com/sindresorhus/sindresorhus.github.com/releases/download/v1.0.0/Amazing.AI.1.6.0.zip) for macOS 15+ - [1.5.0](https://github.com/sindresorhus/sindresorhus.github.com/releases/download/v1.0.0/Amazing.AI.1.5.0.zip) for macOS 14+ - [1.2.2](https://drive.google.com/file/d/1mcEhAKhmQGYzmSS-zlejt3_qsKFzqm0h/view?usp=sharing) for macOS 13+ ## Non-App Store Version A special version for users that cannot access the App Store. It won’t receive automatic updates. I will update it here once a year. [Download](https://github.com/sindresorhus/sindresorhus.github.com/releases/download/v1.0.0/Amazing.AI.1.7.0.zip) *(1.7.0)* *Requires macOS 26 or later* --- # Randa Generate random numbers. URL: https://sindresorhus.com/randa Set a minimum and a maximum, and get a random number in that range. This can be useful for decision-making, picking stuff from a list, board games, dice rolling, coin flips, etc. For example, it’s Netflix & chill night and you cannot decide on a movie. Just generate a random number from 1 to 20 and pick the movie at that position in your watchlist. Need to make a yes or no decision (coin flip)? Just set the minimum to 0 and the maximum to 1. ## Frequently Asked Questions {#faq} ## Older Versions - [1.4.0](https://www.dropbox.com/scl/fi/476tqhek1duur7j59vtu0/Randa-1.4.0-macOS-15-1769609531.zip?rlkey=qlzf72m22nqq9j0ddymbc1xrx&raw=1) for macOS 15+ - [1.3.1](https://github.com/user-attachments/files/18385766/Randa.1.3.1.-.macOS.14.zip) for macOS 14+ - [1.0.0](https://github.com/sindresorhus/meta/files/13852533/Randa.1.0.0.zip) for macOS 13+ ## Non-App Store Version A special macOS version for users that cannot access the App Store. It won’t receive automatic updates. I will update it here once a year. [Download](https://www.dropbox.com/scl/fi/58cje2kirc6i7uv6cxfdb/Randa-1.5.0-1769609488.zip?rlkey=m2rikromxsav4ve3tvxyzq81x&raw=1) *(1.5.0)* *Requires macOS 26 or later* --- # Today Today’s schedule in your menu bar. URL: https://sindresorhus.com/today See today’s events in your menu bar, and nothing else. Click an event to show it in the Calendar app, or join an upcoming video call directly from the menu. This app is intentionally simple. For more advanced needs, check out [Dato](https://sindresorhus.com/dato). It integrates with Calendar, Fantastical, and BusyCal. ## Frequently Asked Questions {#faq} ### How do I get back to the settings if I have hidden the `…` menu item? Press the Option key while opening the Today menu. ### It does not support the video call service I use I’m happy to add support for more services. Just [send me](https://sindresorhus.com/feedback?product=Today&referrer=Website-FAQ) an invitation link (replace a few characters at the end to anonymize it). The app can also detect the link of any video call service if you correctly add it in the Calendar app: - Create a new event. - Paste the video call link into the location field. - Accept the dropdown suggestion about it being a video call. If you don’t use the Calendar app, you can add the following to the notes field of an event: ``` ----( Video Call )---- https://some-video-call-service.com/join/23423 ---===--- ``` ### How do I add a calendar? [Add the calendar to the built-in Calendar app](https://support.apple.com/guide/calendar/add-or-delete-calendar-accounts-icl4308d6701/mac) and then enable it in the Today settings. ### How can I open meeting links (Google Meet, Zoom, Microsoft Teams, etc.) in a specific browser? Check out my [Velja app](https://sindresorhus.com/velja). It has built-in support for this without any setup. It can even open links to Zoom and Microsoft Teams directly in their desktop app. ### I have Fantastical set as my default calendar app but Today still opens Calendar There is a [macOS bug](https://github.com/feedback-assistant/reports/issues/290) that makes the default calendar app setting not work. To work around this, drag an event from the Calendar app into Finder, right-click on it, select “Get Info”, select your calendar in the “Open with” field, and click “Change All”. ### Can you add x feature? This app is a personal experiment to make the simplest calendar app possible. I’m happy to consider requests, but I’m also trying hard to keep the app simple. ### Can the app show notifications for events? {#notifications} You can set up notifications for events in the Calendar app. ### Can the app show notifications with a “Join” button for video calls? I don’t plan to add this. You can get this feature in my [Dato app](https://sindresorhus.com/dato). ### Can the app show the upcoming event in the menu bar? I don’t plan to add this. You can get this feature in my [Dato app](https://sindresorhus.com/dato) (with a lot of customizability). ### Can the app support showing reminders? I don’t plan to add this. You can get this feature in my [Dato app](https://sindresorhus.com/dato). ### Can you make the app show events for more days? “Today” 😁 ### Can you add more menu bar icons? I’m happy to consider requests. You can find icons [here](https://developer.apple.com/sf-symbols/) and [here](https://thenounproject.com). ### I added a calendar to the Calendar app but it doesn’t show up in the app You need to enable the calendar in the app settings. ### Can you add support for Google Calendar / Outlook 365 / Exchange? It’s already supported. Just add your calendars to the built-in Calendar app and then enable those calendars in the app settings. ### My Google Calendar does not update in the app You might have to re-authenticate your Google account. Open the Calendar app’s settings, go to the “Accounts” pane, and try to remove and re-add the Google account. ### How can I make my calendar refresh more often? Open the Calendar app’s settings, go to the “Accounts” pane, choose the relevant calendar service in the left sidebar, and then change the “Refresh Calendars” setting. Ideally, it should be set to “Push”, but not all services support that, like Google. ### Can you add some widgets? I don’t plan to add this. Very few users use widgets on macOS, so it’s not worth the effort for a free app. macOS already has some built-in calendar widgets. And you can get more widgets with my [Dato app](https://sindresorhus.com/dato). ### Can you support iOS? I plan to do that at some point when the app is more mature. ### How does it compare to MeetingBar? {#meetingbar} MeetingBar is mainly for video calls and has a gadzillion settings and features around that. Today has a cleaner look and is opinionated so you don’t have to make so many choices. If all you need is a quick way to join video calls, Today is probably what you want. If you need more advanced features, MeetingBar or [Dato](https://sindresorhus.com/dato) may be a better choice. ### How does it compare to Meeter? {#meeter} Meeter is mainly for video calls. It’s also quite buggy and does not follow macOS conventions. Today has a cleaner look and is opinionated so you don’t have to make so many choices. If all you need is a quick way to join video calls, Today is probably what you want. If you need more advanced features, MeetingBar or [Dato](https://sindresorhus.com/dato) may be a better choice. ## Older Versions - [1.7.1](https://www.dropbox.com/scl/fi/ca9u8j9b563svmshjh37j/Today-1.7.1-macOS-15-1770891871.zip?rlkey=80exyjq71aemdfagycis82u3w&raw=1) for macOS 15+ - [1.6.2](https://github.com/user-attachments/files/18873369/Today.1.6.2.-.macOS.14.zip) for macOS 14+ - [1.5.0](https://github.com/sindresorhus/meta/files/13997505/Today.1.5.0.-.macOS.13.zip) for macOS 13+ ## Non-App Store Version A special version for users that cannot access the App Store. It won’t receive automatic updates. I will update it here once a year. [Download](https://www.dropbox.com/scl/fi/06fgch1tc9yp87n44203e/Today-1.8.0-1770891350.zip?rlkey=8kgvpzcdme7bq917h717nlbk5&raw=1) *(1.8.0)* *Requires macOS 26 or later* --- # Plain Text Editor Simple distraction-free notepad. URL: https://sindresorhus.com/plain-text-editor Simple text editor without any rich text nonsense. The simplicity is a feature. It won’t handle your 1 million line log file, but it is a nice way to write down some ideas. It’s a [Universal Purchase](https://sindresorhus.com/apps/faq#universal-purchase). *It only handles UTF-8 text files (meaning no UTF-16).* ## Frequently Asked Questions {#faq} ### How is the macOS version better than TextEdit? - Editor padding - Optimal line spacing and length - Word count - Hide the title bar - Translucent background - Window can stay on top - Force dark/light mode - Brain dump mode ### Spellchecking does not work This is a macOS bug. You can see the same problem in the built-in TextEdit app too. ### Can you add Markdown syntax highlighting? I don’t plan to add that as I want to keep the app simple. I do plan to make a proper Markdown editor at some point, but that’s not this app. ### Can you add a typewriter mode (centered text)? I don’t plan to add that. ### The text sometimes jumps when I write fast This is a macOS bug. There is unfortunately nothing I can do about it. ### Does the app support window tabs on macOS? {#tabs} Yes. Click “View › Show Tab Bar” in the menu bar and then click the plus button in the window. You can also press Command+N if you have [tabs enabled for document apps](https://support.apple.com/guide/mac-help/mchla4695cce/mac). ### Can I keep it in the menu bar? No, that’s not supported. However, you may be interested in my [Scratchpad](https://sindresorhus.com/scratchpad) app. ### What’s the difference between Plain Text Editor and Scratchpad? [Learn more](https://sindresorhus.com/scratchpad#plain-text-editor-comparison) ### How can I make the app preserve open documents when I quit on macOS? This is already how it works. Actually, it’s how all document-based apps on macOS work. Make sure you don’t have “System Settings › Desktop & Dock › Close windows when quitting an application” enabled. ### How can I make the app not open previously opened documents when I launch the app? Disable the setting mentioned above. ### I have enabled the translucent setting on the macOS app, why is the title bar not translucent? Making the title bar translucent is not supported by macOS. I’m hoping to find a workaround in the future. ### How does “brain dump mode” help with creativity? It helps you focus on the actual writing, instead of getting distracted with editing and nitpicking. [Learn more.](https://writingcooperative.com/how-the-brain-dump-method-can-boost-your-writing-output-881089bb897a) ### When I save a file using the popover in the title bar on macOS, it always appends `.txt` when I choose a different file extension This is a macOS bug. Instead, save the file from the “File” menu or by pressing Command+S. ### How can I toggle “Stay on Top” with a keyboard shortcut on macOS? The keyboard shortcut is listed in the “Window” menu in the menu bar. ### Can I open a text file directly from the command-line? Make a [shell alias](https://shapeshed.com/unix-alias/): ```sh alias pte="open -a 'Plain Text Editor'" ``` Usage: ```sh pte unicorn.txt ``` ### Can you add a text color setting? I don’t plan to add that. It’s not essential and I’m trying to keep the app simple. ### The text flickers a little bit when it wraps on a new line This is unfortunately a macOS bug and out of my control. ### The window size and position is not preserved For document-based apps, which this app is, window size and position are stored per document. macOS is in charge of persisting window size and position for apps, so this is not something the app controls. ### Why is there no way to print? {#print} The app is made using Apple’s latest technologies (SwiftUI) and they have not added print support there yet. If you need to print, open the document in TextEdit instead. Sorry for the inconvenience. ### Why is it suddenly showing a scrollbar? You either have a system setting set to always show scrollbars or you have an external mouse connected. This is simply how macOS works. You can see the behavior in other text editing apps too. See the “Appearance › Show scroll bars” system setting. ### The “Check Spelling While Typing” setting in the context menu does not work This is unfortunately a macOS bug and not something I can fix. *If you work at Apple → [FB13607434](https://github.com/feedback-assistant/reports/issues/467)* ### Can you add line numbers? This is out of scope for this app. ### Can you add a setting to turn off line wrapping? This is out of scope for this app. ## Older Versions - [1.8.4](https://www.dropbox.com/scl/fi/molhmzay7xd2c2pj3wm8g/Plain-Text-Editor-1.8.4-macOS-15-1777075080.zip?rlkey=qud2h63j7x90d6e6t4cxz3pl4&raw=1) for macOS 15 - [1.5.1](https://github.com/user-attachments/files/18928644/Plain.Text.Editor.1.5.1.-.macOS.14.zip) for macOS 14 - [1.3.2](https://github.com/sindresorhus/meta/files/14232390/Plain.Text.Editor.1.3.2.-.macOS.13.zip) for macOS 13 These are free for everyone but they will not run on newer macOS versions. --- # Quick Launch Open websites, apps, and shortcuts from your Lock Screen. URL: https://sindresorhus.com/quick-launch Quickly open websites, launch apps, and run shortcuts directly from your Lock Screen. For example, open google.com, launch TikTok, or run a shortcut to play a random music playlist. Here are [some more ideas](https://github.com/bhagyas/app-urls) of what you could open. ## Frequently Asked Questions {#faq} ### How do I add the widget to the Lock Screen? When on the Lock Screen, tap and hold on the clock, tap the “Customize” button, and select “Favorites”. [Learn more](https://support.apple.com/guide/iphone/iph4d0e6c351/ios#iph0ee454f4c) ### The widget does not show up in the widget picker This is a well-known iOS issue. See [how to fix a widget that does not show up](https://sindresorhus.com/apps/faq#widget-not-showing). ### The Lock Screen widget sometimes disappears Make sure Lock Screen widgets are allowed when locked: “Settings › Face ID & Passcode › Allow Access When Locked › Lock Screen Widgets”. If it’s “off”, iOS may hide the widget until you unlock. ### Can the Lock Screen widgets be full-colored? This is unfortunately not possible. iOS enforces that Lock Screen widgets are single-colored. ### Can you support more actions when tapping a widget? Sure. I’m happy to consider requests. [Send it here.](https://sindresorhus.com/feedback?product=Quick%20Launch&referrer=Website-FAQ) ### How does it compare to other similar Lock Screen launchers? It can open any app, not just from a predefined list, and it has more icon choices. ### When using the “Run Shortcut” action, why does tapping the widget first open the main app and then the Shortcuts app? This is because of iOS limitations. A widget can only open its own app when a user taps it. And the only way to run a shortcut is to open the Shortcuts app using a special URL. So when you tap the widget, the widget opens the main app, and the main app then opens the Shortcuts app. It’s not a very good user experience, but only Apple can fix this. If you work at Apple, you know what to do: - [FB9745173](https://github.com/feedback-assistant/reports/issues/240) - [FB11516334](https://github.com/feedback-assistant/reports/issues/357) - [FB11516273](https://github.com/feedback-assistant/reports/issues/356) --- # Any Text Put text on your Lock Screen, Home Screen, and desktop. URL: https://sindresorhus.com/any-text Write a goal, a note, or a short list, and see it every time you look at your Lock Screen, Home Screen, Apple Watch, or desktop. The text is shown in widgets that you add where you want them. For macOS, it’s only available for Apple silicon Macs running macOS 26 or later. On iOS, you can also show the text in a Live Activity. Syncs across your devices with iCloud.
> [!TIP] > You may also like my [One Thing](https://sindresorhus.com/one-thing) app for macOS. ## Tips ### Markdown {#markdown} You can style parts of the text bold, italic, or strikethrough using [Markdown](https://www.markdownguide.org/basic-syntax/). For example: - **Bold text** is created by wrapping text with double asterisks: `**bold**` - *Italic text* is created by wrapping text with single asterisks: `*italic*` - ~~Strikethrough text~~ is created by wrapping text with double tildes: `~~strikethrough~~` ### Troubleshoot syncing {#troubleshoot-syncing} - After enabling sync, try writing some more text on all the devices. - [More…](https://sindresorhus.com/apps/faq#icloud-sync) ## Frequently Asked Questions {#faq} ### How do I add the widget? - [iOS](https://support.apple.com/HT207122) - [macOS](https://support.apple.com/guide/mac-help/mchl52be5da5/mac) - [watchOS](https://support.apple.com/guide/watch/see-widgets-in-the-smart-stack-apdecf142fb9/watchos) ### The widget does not show up in the widget picker, the widget is stuck, or is missing from the Home Screen The iOS widget system is quite buggy and can fail a lot. This is not a problem with the app and out of my control. See [how to fix a widget that does not show up](https://sindresorhus.com/apps/faq#widget-not-showing). ### The widget is blank Try this: - Restart your device. - Change the language of the device to something else and then back. - Ensure Lock Screen widgets are allowed to show content while the device is locked at “Settings › Face ID & Passcode › Allow Access When Locked › Lock Screen Widgets”. ### The Lock Screen text sometimes disappears Make sure Lock Screen widgets are allowed when locked: “Settings › Face ID & Passcode › Allow Access When Locked › Lock Screen Widgets”. If it’s “off”, iOS may hide the widget until you unlock. ### Can you support having multiple pieces of text that change during the day? I would like to keep the app simple, so it’s not something I plan to support built-in. However, the app comes with a shortcut action to change the text, so you could use the [Shortcuts automations](https://support.apple.com/guide/shortcuts/apdfbdbd7123/7.0/ios/17.0) to change the text during the day. You could also put multiple widgets in a [widget stack](https://support.apple.com/118610). ### Can you add support for user-installed fonts? This is unfortunately not possible as widgets cannot access user-installed fonts. ### Can I make the widget horizontally centered on the Lock Screen? This is unfortunately not possible. Apple has decided that the rectangular widget can only appear on the left or right side. ### Can I pick a color for the text on the Lock Screen? Lock Screen widgets cannot have colors. You can set a custom text color for the normal widgets though. ### Can I pick a background color for the Lock Screen widgets? Same answer as the above. ### The widget does not update if I write some text in the app and then reveal the Lock Screen You need to first close the app. This is an iOS bug. If you work at Apple → [FB11522275](https://github.com/feedback-assistant/reports/issues/360) ### The widget does not update even if I do the above The app tells iOS to update the widget, unfortunately, iOS can decide to delay an update for various reasons (low battery, low-power mode, etc). This is completely out of my control. ### The widget does not update when setting the text with the Shortcuts action This is unfortunately an iOS bug. The app correctly tells iOS to update the widget, but iOS delays it for some reason. The text will update eventually. If you work at Apple → [FB11522170](https://github.com/feedback-assistant/reports/issues/359) ### Can you make the widget bigger? The widget sizes are controlled by Apple. The provided size is the largest it allows. ### Can you make the widget background transparent? This is not possible. ### Can you remove the title shown below the widget? Apple does not allow removing the title. Some apps managed to do it early on, but these days, Apple rejects any attempt at doing that. However, in iOS 18 you can hide the title for all apps and widgets. ### How can I remove the date prefix from the inline Lock Screen widget above the clock? iOS forces the date to be shown. This is out of my control. ### The inline Lock Screen widget above the clock does not respect my font choice iOS forces the text to be the same style as the prefixed date. This is out of my control. ### Can it open a specific app instead when tapping the widget? Create a shortcut in the Shortcuts app that opens the app you want, then open “Any Text”, go to one of the widgets, open settings, and set the tap action to the shortcut you just made. ### Can I prevent my child from editing the text when tapping the widget? You can set the “Widget Tap Action” setting to “None”. ### Can I edit the text directly from the Home Screen or Lock Screen? No, widgets only support tapping interactions. ### The Lock Screen widget does not show the text after restarting the device, before unlocking it This is an iOS limitation and is out of my control. It shows a placeholder until the first unlock. This is how all Lock Screen widgets work. ### When using the “Run Shortcut” action, why does tapping the widget first open the main app and then the Shortcuts app? This is because of iOS limitations. A widget can only open its own app when a user taps it. And the only way to run a shortcut is to open the Shortcuts app using a special URL. So when you tap the widget, the widget opens the main app, and the main app then opens the Shortcuts app. It’s not a very good user experience, but only Apple can fix this. If you work at Apple, you know what to do: - [FB9745173](https://github.com/feedback-assistant/reports/issues/240) - [FB11516334](https://github.com/feedback-assistant/reports/issues/357) - [FB11516273](https://github.com/feedback-assistant/reports/issues/356) ## Scripting The text in the widgets can be changed using the Shortcuts app. ### Shortcuts app - [Shortcuts usage guide](https://www.xda-developers.com/guide-shortcuts-macos/) - [How to run shortcuts from the command-line on macOS](https://support.apple.com/guide/shortcuts-mac/run-shortcuts-from-the-command-line-apd455c82f02/mac) ### Command-line on macOS Shortcuts can be executed via the command-line, allowing you to set widget text programmatically. For example, to set the text for widget 1, add [this shortcut](https://www.icloud.com/shortcuts/6873c23a3cbb4718b23135e367d6be1b), and then run this: ```sh echo 'TEST' | shortcuts run 'Set Widget 1 Text' ``` --- # Favorites Widget Contacts on your Lock Screen, Home Screen, and desktop. URL: https://sindresorhus.com/favorites-widget Call, message, or email your favorite people directly from the Lock Screen or Home Screen. You can also open a URL or run a shortcut instead when tapping the widget. This opens up a lot of cool possibilities. Here are [some ideas](https://github.com/bhagyas/app-urls) of what you could open. ## Frequently Asked Questions {#faq} ### How do I add the widget? - [iOS](https://support.apple.com/HT207122) ### The widget does not show up in the widget picker This is a well-known iOS issue. See [how to fix a widget that does not show up](https://sindresorhus.com/apps/faq#widget-not-showing). ### The Lock Screen widget sometimes disappears Make sure Lock Screen widgets are allowed when locked: “Settings › Face ID & Passcode › Allow Access When Locked › Lock Screen Widgets”. If it’s “off”, iOS may hide the widget until you unlock. ### Can I call someone by just tapping the widget without the confirmation dialog? Yes. Enable the “Quick Call” setting in the app. ### Can the Lock Screen photos be full-colored? This is unfortunately not possible. iOS enforces that Lock Screen widgets are single-colored. ### Can you support more actions when tapping a widget? Sure. I’m happy to consider requests. [Send it here.](https://sindresorhus.com/feedback?product=Favorites%20Widget&referrer=Website-FAQ) ### Can you make the widget background transparent? This is not possible. ### When using the “Run Shortcut” action, why does tapping the widget first open the main app and then the Shortcuts app? This is because of iOS limitations. A widget can only open its own app when a user taps it. And the only way to run a shortcut is to open the Shortcuts app using a special URL. So when you tap the widget, the widget opens the main app, and the main app then opens the Shortcuts app. It’s not a very good user experience, but only Apple can fix this. If you work at Apple, you know what to do: - [FB9745173](https://github.com/feedback-assistant/reports/issues/240) - [FB11516334](https://github.com/feedback-assistant/reports/issues/357) - [FB11516273](https://github.com/feedback-assistant/reports/issues/356) --- # Velja Powerful browser picker. URL: https://sindresorhus.com/velja Open each link in the right browser, profile, or app, automatically, or pick one from a prompt when you hold Fn. For example, Google Meet links open in Chrome, Figma links in the Figma app, and links from Slack in your work profile. [In-depth review of Velja.](https://www.podfeet.com/blog/2022/11/velja/) [*Trusted by more than 100K users.*](https://github.com/user-attachments/assets/011c6bda-186c-4ee7-868a-b71cc6f49a0b) @Feature(title: "Open each link in the right place") { Make a rule for a website or for the app you click links in, and choose the browser, browser profile, or app that opens them. Some links need no rule at all: Velja can open Google Meet links in Chrome, and Zoom, Microsoft Teams, and Figma links in their desktop apps. } @Feature(title: "Pick a browser when you click") { Velja can show a prompt with your browsers for all links, only for links from some apps, or only when you hold Fn while you click. Press a key to pick a browser. Command-click a browser to always open that website there. } @Feature(title: "Use browser profiles and private windows") { Choose a browser profile anywhere you choose a browser: as the default, in the prompt, or in a rule. Send work links to your work profile and everything else to your personal one. Private windows work the same way, so you can open external links privately in Firefox or Chrome. See which browsers support [profiles](https://sindresorhus.com/velja#supported-browsers-for-profiles) and [private windows](https://sindresorhus.com/velja#supported-browsers-for-private-browsing). }
> [!TIP] > You may also like my [Default Browser](https://sindresorhus.com/default-browser) app.
#### Example use-cases - Use Safari as your primary browser but open Google Meet links in Chrome - Open links to figma.com directly in the Figma desktop app - Open links to the internal company website in Firefox - Open Zoom meeting invitations directly in the desktop Zoom app - Open all links clicked in the Slack app in your Chrome work profile
#### Supported browsers Any browser. #### Supported browsers for profiles {#supported-browsers-for-profiles} - Chrome *(and Beta, Canary, Dev)* - Edge *(and Beta, Canary, Dev)* - Brave *(and Beta, Nightly)* - Brave Origin *(and Beta, Nightly)* - Vivaldi *(and Snapshot)* - Chromium - [Comet](https://comet.perplexity.ai) - [Helium](https://helium.computer) - Thorium - Wavebox - Firefox *(and Firefox Nightly, Firefox Developer Edition)* \* - Zen \* \* Only supports [new-style profiles](https://support.mozilla.org/en-US/kb/profile-management), not ones created with `about:profiles`. [How to migrate.](https://sindresorhus.com/velja#firefox-migrate-profiles) #### Supported browsers for private browsing {#supported-browsers-for-private-browsing} - Chrome *(and Beta, Canary, Dev)* - Edge *(and Beta, Canary, Dev)* - Brave *(and Beta, Nightly)* - Brave Origin *(and Beta, Nightly)* - Vivaldi *(and Snapshot)* - Chromium - Opera *(and Beta, Developer, GX)* - Firefox *(and Firefox Nightly, Firefox Developer Edition)* - Zen - LibreWolf Safari is not supported built-in, but can be supported by doing [this](https://github.com/sindresorhus/Safari-Private). ## Trial @Trial(url: "https://www.dropbox.com/scl/fi/4qmbgqvgr5x3oiupm7ekz/Velja-3.2.4-trial-1789044969.zip?rlkey=vwh6ptvawi4sn5oh7sh7lmssg&raw=1") { The trial is fully functional. The only limitation is a reminder to buy the app every 12 hours, and no automatic updates. All data and settings carry over if you buy it. } *Download it to the Downloads folder, double-click to unzip, and then move it to the `/Applications` folder.* *Requires macOS 26 or later* ## Tips ### Prompt Instead of showing the browser prompt by default, you could set it as the alternative browser, which would make it show when you hold the Fn key while clicking a link. You could also create a custom rule and select `Prompt` as the browser. For example, you could only show the prompt when clicking links in the Slack app. If you want to open a link in the background, press Control when selecting a browser in the prompt. [Known issue.](https://sindresorhus.com/velja#chrome-background-bug) ### Prompt shortcuts While showing the browser prompt, you can press Option to show buttons to copy or share the link. Or press Shift or Command+C to quickly copy the link. Assign a custom letter to each browser in the “Shown Browsers” list to pick it directly by key while the prompt is open. Press Control+Tab/Shift+Control+Tab or arrow keys to cycle through browsers. Press Return or Space to select one. Command-click a browser to create a rule that always opens the current domain in that browser. You can also right-click a browser for more options, including creating a rule and opening in a new window (if supported by the browser). ### Copy URL See the above tip. You can also have “copy URL” as a browser choice in the prompt by installing [this app](https://github.com/sindresorhus/Copy-URL). ### Open links clicked in a specific app in a specific browser For example, to open all links you click in Slack in Chrome: - Open the Velja settings and go to the “Rules” pane. - Create a new rule and give it a name. - Select the browser to open. You can even choose a specific Chrome profile. - Create a new “Source Apps” matcher and select the app you want. For example, Slack. - Click “Save”. ### Transform URLs before matching rules {#global-url-transformation} In the “Advanced” settings, enable “Transform all URLs before matching rules” to run JavaScript on every link before custom rules are matched. Velja first resolves known redirect wrappers and applies enabled short URL expansion and tracking parameter removal. It then runs your script, and rules match against the resulting URL. This is useful when an app wraps the destination in a redirect or link guard that Velja does not already recognize. The script can extract the actual destination so Velja can choose a browser based on it. This differs from the “Transform URL” option inside a rule. A rule’s transformation runs only after that rule has matched, so it cannot affect which rule is selected. Keep the [log window](https://sindresorhus.com/velja#debug) open while testing. It records whether the global script changed the URL, made no changes, or failed. Failures include the transformation error and input URL. If the script fails, Velja continues matching rules with the URL from before the script ran. ### Using the Velja browser extension to open links directly in another browser To open links from one browser to another when clicking the Velja browser extension icon without seeing a prompt: 1. Go to Velja’s Advanced settings and disable “Force show prompt when opening from browser extension” 2. Create a new rule: - Choose your target browser in “Open in” - Add your source browser in “Source Apps” For example, clicking the Velja extension icon in Safari should now open the link directly in Firefox. ### Open links in a private/incognito window Select a destination such as **Firefox (Private)** or **Chrome (Private)** in Velja’s browser picker. You can use it as your primary browser to open external links privately, as your alternative browser, or in a custom rule for specific websites or source apps. To show private destinations in the browser prompt and menu, enable them in **Settings › Browsers › Shown Browsers**. For occasional use, right-click a supported browser in the prompt and choose **Open in Private Window**. [See supported browsers.](https://sindresorhus.com/velja#supported-browsers-for-private-browsing) The browser chooses which profile to use; selecting a specific profile and forcing a new window are not supported. The browser may reuse an existing private window. For Safari, use [Safari Private](https://github.com/sindresorhus/Safari-Private). ### Open multiple URLs If you have a document with many URLs you want to open, select them, right-click, go to “Services”, and click “Open URLs with Velja”. [Learn more.](https://sindresorhus.com/velja#macos-services) ### Open links in a website-wrapper app Let’s say you have generated a website wrapper app for facebook.com using an app like [Unite](https://www.bzgapps.com/unite) or [Coherence](https://www.bzgapps.com/coherence), and you want all links to Facebook to go to this app instead of your browser: - Open the Velja settings and go to the “Rules” pane. - Create a new rule and give it a name. - Select the website wrapper app in the “Open in” field. - Create a new “URL Matchers” matcher and write “facebook.com” in the “Match” field. - Click “Save”. ### Open default browser You can use [this shortcut](https://www.icloud.com/shortcuts/c0104150c4054ff2a577237056aad083) to open the default browser. ### System services {#macos-services} The app comes with [system services](https://macreports.com/what-is-the-services-menu-in-macos/?utm_source=chatgpt.com) to open URLs with Velja. This lets you open URLs with Velja from anywhere. For example, select some text with URLs, right-click, go to “Services”, and click “Open URLs with Velja”. When you right-click a link in Chrome, the service gets only the title of the link, not the URL. Please star [the Chrome issue about links sent to services](https://issues.chromium.org/issues/40839891). If you want to force the browser prompt, you can either press Option when activating the service or use the “Open URLs with Velja Prompt” service. If you want to force the link to open in the background, press Shift when activating the service. [Known issue.](https://sindresorhus.com/velja#chrome-background-bug) *You may have to enable the service in “System Settings › Keyboard › Keyboard Shortcuts › Services”.* ### Browser extensions - Safari — Built-in. Just enable it in the Safari settings. - [Chrome](https://chrome.google.com/webstore/detail/velja/gpipdgcamiclkcomcnogmlfpalggmcmk) — Also works in Edge, Brave, and other Chromium-based browsers. - [Firefox](https://addons.mozilla.org/firefox/addon/velja/) ### Open the current website in a different browser For example, you are surfing a website in Safari and want to open it in Chrome. You could enable the Velja browser extension and then click the toolbar icon in your browser to show the Velja browser prompt. You could also show the browser prompt when pressing a keyboard shortcut: - Add [this shortcut](https://www.icloud.com/shortcuts/6c2d3793f101447dad449e83bde8d967). - If your browser is not Safari, change the app name in the shortcut. - Add a keyboard shortcut to the shortcut config. - Pressing the configured keyboard shortcut will now show the browser prompt. If you want to open the website in a specific browser directly instead of showing the browser prompt, add [this shortcut](https://www.icloud.com/shortcuts/d3f833d1a1334d169ccefe26fa0ec240) instead. ### Open links clicked in a browser or PWA in a specific browser Velja generally cannot handle links clicked in a browser because browsers don’t notify the system about it. However, there is a workaround. Install the [Redirector browser extension](https://rxliuli.com/project/redirector/) and make a rule in that extension to open links in Velja. Here’s an [example rule](https://www.dropbox.com/scl/fi/nlfz76zbfd2fy0sg2ebz1/rules-1750189056.json?rlkey=32vbyznt3051ibd1lhbafbhtb&raw=1) (import it into the Redirector extension) that opens certain URLs clicked in a browser in Velja. For Chrome, you can run the following commands in the Terminal app to ensure that these types of links always open in the associated app: ```sh defaults write com.google.Chrome URLAllowlist -array-add 'velja:*' defaults write com.google.Chrome ExternalProtocolDialogShowAlwaysOpenCheckbox -bool true ``` And for Edge: ```sh defaults write com.microsoft.Edge URLAllowlist -array-add 'velja:*' defaults write com.microsoft.Edge ExternalProtocolDialogShowAlwaysOpenCheckbox -bool true ``` For other Chrome-based browsers, replace `com.google.Chrome` with their bundle identifier in the above commands. ### Launch browsers from Velja menu Hold the Option key when clicking a browser in the Velja menu to launch it instead of setting it as the current browser. You can also press Option+1 through Option+9 to quickly open a browser by its position in the list. This even works with browser profiles. ### Open certain URLs in a specific browser profile - Open the Velja settings. - Go to the “Browsers” tab and grant access to browser profiles. - Go to the “Rules” tab. - Click “+”. - Choose a browser profile in “Open in”. - Click “+” for the “URL Matchers”. - Define a pattern that matches the URLs you want to match. - Click “Save”. Chrome’s AppleScript support does not know about profiles. Please star [the Chrome issue about AppleScript and profiles](https://issues.chromium.org/issues/40962200), as a fix would help Velja users. ### Automatically switch browser or browser profile based on time, location, or Focus mode Say you use different browser profiles for work and home and want them to switch automatically. This is a good use for the Shortcuts app. Create a shortcut with the “Set Default Browser” action that sets the browser profile to the one you want at home and another for work. Then use Shortcuts automations to run these shortcuts at specific times, or based on your Focus mode if you have one for work. You could even run the shortcuts based on Wi-Fi name, which may be easier than defining work times if you work from an office. ### Miscellaneous - In the Velja menu, you can click “History” to directly open the history window. ## Frequently Asked Questions {#faq} ### The app does not show up in the menu bar [Try this](https://sindresorhus.com/apps/faq#app-not-showing-in-menu-bar) You may also have disabled the “Show menu bar icon” setting, which hides the menu bar icon. Launch the app again to reveal the menu bar item for 5 seconds. ### Can I assign single-letter shortcuts to browsers in the prompt? Yes. In “Settings › Browsers”, open “Shown Browsers” and assign a **Prompt Shortcut** (`a`–`z`) to each browser. This enables one-key selection, for example `s` for Safari, `c` for Chrome. When the prompt is shown, press the key to open instantly. If no shortcut is set, browsers are selected by their number in the list. ### Why is the app suddenly paid? It used to be free. While I love making free apps that are available to anyone, the high volume of support requests became unsustainable. After providing Velja for free for 3 years with nearly 130K downloads, I made the decision to make it paid. This isn’t about revenue. It’s about managing my time more effectively by reducing the support burden to a sustainable level. ### Can this app be available on Setapp? {#setapp} Setapp curates apps based on demand, so if you’d like to see this app on Setapp, [email them](https://support.setapp.com/hc/articles/4950254561052-How-to-contact-Setapp-team#:~:text=to%20your%20issue.-,Send%20an%20email,%3A%20support%40setapp.com.) and request its inclusion. ### Can Velja route mailto links to a specific email app? {#mailto} No. Velja handles browser links (URLs). For routing mailto links to different email apps or webmail services, check out my [Mailway](https://sindresorhus.com/mailway) app. ### Velja does not work First, make sure that the problem is Velja. Go to “System Settings › Desktop & Dock” and change the “Default web browser” setting to Safari. Then try clicking the link again. If the problem persists, it’s not caused by Velja. **I clicked a link in a browser** Velja is not able to handle links clicked inside a browser. However, Velja comes with a Safari extension which you can enable in the Safari settings. You can then click the toolbar icon to open the current page with Velja or right-click a link to open it with Velja. There are also [extensions for other browsers](https://sindresorhus.com/velja#browser-extensions). If you use a browser where Velja does not have a browser extension, you could also right-click the link and use the share extension \* or copy the link and then click “Open URL from Clipboard” in the Velja menu. \* *Chrome (and Edge, Brave, etc.) does not have a “Share” item in its context menu. Please [star this issue](https://bugs.chromium.org/p/chromium/issues/detail?id=916291).* Velja also comes with a [system service](https://www.computerworld.com/article/2476298/os-x-a-quick-guide-to-services-on-your-mac.html). However, neither Safari ([issue](https://github.com/feedback-assistant/reports/issues/304)) nor Chrome ([issue](https://bugs.chromium.org/p/chromium/issues/detail?id=1325557)) correctly sends links to a system service, so it cannot be used for this purpose. **The prompt does not show** Make sure you didn’t click the link in a browser. See above. **I clicked a link in VS Code** VS Code may be set to not use the system default browser. Because of this, Velja is not used. Delete the `workbench.externalBrowser` setting in VS Code if it’s set. **I clicked a short URL** If the link is a [short URL](https://en.wikipedia.org/wiki/URL_shortening), make sure the “Expand short URLs” setting is enabled and the URL shortening service is either in the built-in list or added by you. Velja is only able to do its matching when it receives the resolved URL. **I clicked a button in the Dropbox app** This is either a macOS or Dropbox bug. Velja simply opens what it receives, but what it receives has incorrect permissions. When you click a button in Dropbox to open it on the web, it doesn’t actually open the URL directly, but instead writes an HTML file (which redirects to the final URL) to a temporary directory. I’m not sure why it does this, but it’s likely the cause of the issue. **It did not respect my rule that uses a “source app” condition** Ensure Velja correctly identifies the source app where the link was clicked. To check, enable the history setting (in the “Advanced” settings tab), click a link, and confirm the correct source app appears in the history screen. If the URL was opened using the `open` command-line tool, it may not work as expected because `open` closes before Velja can capture the app name. To work around this, use the following command: ```sh timeout 0.5 open --wait-apps "https://sindresorhus.com/velja" ``` Some apps use the `open` command-line tool internally, and they will unfortunately also not be detected. In short, if the source app does not show up in the history, there isn’t anything Velja can do about it. Known apps where Velja cannot reliably identify the source: - Terminal apps - AWS VPN Client ### Why is my custom rule not matching? {#custom-rule-problem} Make sure you have added a “Sample URL” to the rule to confirm your match pattern is correct. Open the log (in the menu bar “…” menu) to see which rules matched and how URLs were transformed. This is the easiest way to understand what Velja did with a URL. See also [this](https://sindresorhus.com/velja#debug) for more debug info. When an enabled global URL transformation script runs, the log records whether the script changed the URL, made no changes, or failed. When rule matching runs after a change, rules match against the URL on the right side of the “Global URL transformation changed the URL” entry, not the URL on the left. [Learn more about global URL transformation.](https://sindresorhus.com/velja#global-url-transformation) If your rule uses a “source app” condition, make sure Velja correctly identifies the source app (see the FAQ entry on that). If the link is a short URL, make sure the “Expand short URLs” setting is enabled. Some apps use a redirect URL for tracking purposes. Velja has built-in support for a lot of redirect services and it also tries to resolve URLs to their final destination. However, some redirects cannot be resolved by Velja. This is the case with some links clicked in Slack as they require the login token to be able to redirect. There is unfortunately nothing I can do about that. If the redirect URL contains the destination URL (usually in a search parameter), contact me and I will add support for it. ### What are tracking parameters and why would I want to remove them? Removing tracking parameters improves privacy and also makes URLs more aesthetically pleasing. Tracking parameters are used by many websites to track your browsing activity across websites. [Learn more.](https://en.wikipedia.org/wiki/UTM_parameters) Velja supports 200+ common tracking parameters (e.g. Google UTM) and it has special support for removing tracking from links to X (Twitter), Facebook, and TikTok. Before: `https://foo.com?utm_content=buffercf3b2&utm_source=snapchat.com`\ After: `https://foo.com` Did you know that if you click a TikTok link that someone shared with you, they will be able to see that you watched it? Velja anonymizes TikTok links so that you will not be tracked. ### Tracking parameters are not removed {#tracking-parameters-not-removed} First, make sure the setting to remove tracking parameters is enabled. If the clicked/copied link is a short URL, Velja is only able to remove the tracking parameters if the “Expand short URLs” setting is enabled and it’s a known short URL service or you added the short URL service in the “Advanced” settings pane. The app contains a list of tracking parameters to remove, but there may be site-specific tracking parameters it doesn’t know about. If you encounter any tracking parameters not being removed, [let me know](https://sindresorhus.com/feedback?product=Velja&referrer=Website-FAQ) and I’ll add support for them. ### Can you add support for this browser? {#add-browser} Velja automatically retrieves all browsers on your computer. There is no manual list of browsers. If some browser is not showing up, make sure it’s in the `/Applications` folder and not in the `~/Applications` folder. ### Can you add another app to the “Apps” settings? {#builtin-apps-requests} **I’m not currently accepting more apps.**\ However, if the app supports a custom URL scheme to open links in the app, you could create a custom rule in Velja and use the “transform URL” feature to rewrite the URL to the custom URL format the app accepts. You could ask AI for help with this. I’m happy to consider requests (but read the below first). [Submit here.](https://sindresorhus.com/feedback?product=Velja&referrer=Website-FAQ) *(Include a link to the app and what behavior you expected)* > [!NOTE] > This is about opening a link in a specific app. If you want to open a link **from** a specific app, just use the rules feature in the settings (it supports any app). *If this is about opening a specific website (for example, Google Sheets) in a specific browser, you should use the rules feature instead (the “Rules” tab in the settings). You can easily make a rule for any website.* *If this is about opening a specific website like Facebook in an app-wrapped website generated with something like Unite or Coherence, it’s better to just add support yourself. You can use the rules feature for this. For example, write “facebook.com” as the domain and select the website wrapper app you generated.* However, some apps are not feasible: - Slack + [Explanation.](https://sindresorhus.com/velja#slack) - Cisco Webex + *[Comment here](https://github.com/johnste/finicky/discussions/228) if you know how to do this.* - [MURAL](https://mural.co) + The app has no support for opening URLs from the web version. - [GitHub Desktop](https://github.com/desktop/desktop) + The app only accepts a link to a repo to clone. This is not very useful in practice. - Monday.com + The app does not accept any links. - Todoist + Only supports opening links to a todo item and it only works when the app is already running. - Craft.do + The app does not accept any links. It does accept [custom URL scheme](https://support.craft.do/hc/articles/360020168838-Using-URL-Scheme) links, but I’m not interested in having to maintain more code to transform URLs in Velja when the services should just handle it themselves in their desktop apps. And some apps do not need special support because they already support [universal links](https://developer.apple.com/ios/universal-links/): - ChatGPT - [Quip](https://quip.com) - Maps (the built-in app) - Overcast *Universal links also prevent Velja from letting you open a link in the browser instead of the app. [Possible workaround.](https://lapcatsoftware.com/articles/universal-links2.html)* If your favorite service is in the above list, I would recommend contacting them and asking them to support opening a link directly in their app. That means being able to run the command `open -a AppName https://foo.com/link-to-project-or-meeting`. ### ClickUp with a custom workspace subdomain {#clickup-custom-subdomain} ClickUp Enterprise workspaces can have a custom subdomain (e.g., `acme.clickup.com`). If your workspace uses one, [let me know](https://sindresorhus.com/feedback?product=Velja&referrer=Website-FAQ) and I’ll add built-in support for it. In the meantime, you can use a custom rule with the “Transform URL” feature to rewrite the URL. Set the URL matcher to your subdomain and use this script: ```js $.url.href = 'clickup://' + $.url.pathname.slice(1) + $.url.search; ``` Then set “Open in” to your default browser. macOS will route the `clickup://` URL to the ClickUp desktop app. ### Can Velja override Universal Links? No. There is a way to do it, but it requires a special entitlement from Apple. I applied for it a year ago and haven’t heard anything. There are some ways to [disable Universal Links](https://mjtsai.com/blog/2022/04/19/disabling-universal-links/). ### How can I add a browser profile to the prompt? First, make sure you grant access to profiles in the settings and then enable them in the “Shown Browsers” setting. ### Browser profiles are not working {#profiles-not-working} On macOS 27, the browser can untick itself in “System Settings › Privacy & Security › Files & Folders › Velja”, and browser profiles then stop working. To fix it, select Velja in that list and press “-” to remove it. Then go back to Velja and open the System Settings again from there. Velja is added again and the access works. ### Why don’t Brave profiles show avatars in Velja? {#brave-profile-avatars} Brave exposes its built-in avatars as Chromium theme resources such as `brave://theme/IDR_PROFILE_AVATAR_*`, rather than standalone profile-image files. Velja currently doesn’t read those resources, so it falls back to the profile name and initials. Brave also doesn’t currently allow custom profile images. See [this Brave community discussion](https://community.brave.app/t/cannot-set-custom-profile-avatar-in-brave-inconsistent-with-other-chromium-based-browsers/651521) for more information. ### How can I open specific URLs in a Safari PWA (website added to the Dock)? {#safari-dock-app} Websites added to the Dock from Safari are just normal apps located in `~/Applications`. You could create a custom rule to match certain URLs and have them open in one of these web-wrapper apps. ### How can I open specific URLs in a Chromium browser PWA? {#chromium-pwa} Velja supports opening specific URLs in Chromium PWAs (Chrome, Edge, Brave, etc.). This requires the “open.sh” helper script to be set up (Settings › Advanced). Velja launches the parent browser with the correct flags to open the PWA at the specific URL. ### Can you support Firefox Multi-Account Containers? {#firefox-containers} It’s not feasible to support [Firefox Multi-Account Containers](https://github.com/mozilla/multi-account-containers) built-in because of missing features: - - - *(Vote them up)* However, you can achieve it yourself using Velja’s URL transform feature. **Setup** 1. Install [Firefox Multi-Account Containers](https://addons.mozilla.org/firefox/addon/multi-account-containers/) 2. Install [Open URL in Container](https://addons.mozilla.org/firefox/addon/open-url-in-container/) 3. Create your containers in Firefox (e.g., “Work”, “Personal”) 4. Get the signature from the Open URL in Container extension settings (External Protocol section) **Creating a rule** 1. Open Velja settings › **Rules**, and click **“+”** 2. Set **Open in:** Firefox 3. Add **URL Matchers** for domains you want in this container 4. Enable **“Transform URL”** and add this script: ```js const containerName = 'Work'; // Your container name const signature = 'YOUR_SIGNATURE'; // From extension settings const originalURL = $.url.href; const containerURL = `ext+container:name=${encodeURIComponent(containerName)}&url=${encodeURIComponent(originalURL)}&signature=${signature}`; $.url = new URL(containerURL); ``` 5. Click **“Run”** to test. The output should be `ext+container:name=Work&url=https%3A%2F%2F...` 6. Save the rule Repeat for each container you want to use. **Notes** - Container names are case-sensitive. - The signature is the same for all containers. - If the signature changes (e.g., after reinstalling the extension), update all rules. ### Can you support Firefox profiles? {#firefox-profiles} Firefox profiles are now supported. Make sure you grant access to profiles in the Browsers settings tab, then enable Firefox profiles in the “Shown Browsers” setting. > [!NOTE] > Only profiles created using Firefox’s [new profile system](https://www.reddit.com/r/firefox/comments/1mi38vp/firefox_has_a_profile_switcher_now_heres_how_to/) (Firefox 138+) are supported (not profiles created using `about:profiles`). See below on how to migrate. ### How do I migrate legacy Firefox profiles to the new profile system? {#firefox-migrate-profiles} The legacy profiles (created with `about:profiles`) and the new profile groups are separate, and unfortunately, Firefox has not provided any automatic migration. How to migrate: - Create a new profile with the [new profile manager](https://support.mozilla.org/kb/profile-management), then quit Firefox. - Open the old profile’s root directory using the [old profile manager](https://support.mozilla.org/kb/profile-manager-create-remove-switch-firefox-profiles), then go up one level to find the new profile folder (ends with “Profile 1”, e.g., VqlLK6hB.Profile 1). - Delete all files inside that new profile folder. - [Copy the contents from an old profile](https://support.mozilla.org/kb/profiles-where-firefox-stores-user-data#w_finding-your-profile-without-opening-firefox) into that folder. - Launch it using the [new profile manager](https://support.mozilla.org/kb/profile-management). - If extensions misbehave, start Firefox in [Troubleshoot Mode](https://support.mozilla.org/kb/diagnose-firefox-issues-using-troubleshoot-mode), then restart. ### I opened a link in the background but it brought Chrome to the foreground {#chrome-background-bug} Chrome (and Chrome-based browsers) does not properly respect opening URLs in the background (it generally does not respect platform conventions). This can be reproduced even without Velja by setting Chrome as the system default browser in the System Settings and then running the following in the Terminal: ```sh open --background 'https://sindresorhus.com' ``` Please star [the Chrome issue about opening links in the background](https://issues.chromium.org/issues/41182587) and [the Chrome issue about Chrome coming to the front when asked not to](https://issues.chromium.org/issues/40246767). ### The link takes a long time to open This is most likely not caused by Velja. Some users reported it was a problem with Microsoft Office and happened without Velja too. Also try to disable the “Expand redirect and short URLs” setting. To confirm Velja is not the problem: Go to “System Settings › Desktop & Dock” and change the “Default web browser” setting to Safari. Then try clicking the link again. If the problem persists, it’s not caused by Velja. ### Can you add support for opening Slack links in the Slack desktop app? {#slack} This is currently not possible. The Slack app does not accept a normal deep link (example: `https://team-name.slack.com/archives/CKPE4C/p161643063559`). It only accepts a special Slack-specific URL. To be able to convert a normal Slack link to one that the desktop app accepts, we would need to get the team ID from the Slack API and that requires authentication. It’s simply not feasible to do this. **Please do send feedback to Slack asking them to accept a normal link, like most other apps support.** You can actually solve this yourself by [creating a rule in Velja](https://gist.github.com/tim775/bbcf473460fbe786e927d8d961b23988). ### Can the default browser change based on the active focus mode? {#focus-mode} You can use the [Focus Filter](https://support.apple.com/HT212608) that comes with the app. Focus Filters are [broken on macOS 26.5 and later](https://developer.apple.com/forums/thread/826766) because of a macOS bug. Alternatively, you can use the Shortcuts app for this. Make a shortcut for each [focus mode](https://support.apple.com/guide/mac-help/set-up-a-focus-to-stay-on-task-mchl613dc43f/mac) you want to handle, where you use the “Set Default Browser” action that Velja provides. Then use Shortcuts automations to run these shortcuts when the focus mode changes. ### Can the default browser change depending on whether I’m at work or not? See the above answer. You just create a work focus mode. ### Can the default browser change depending on whether the computer is on battery? See the above answer. Use a Shortcuts automation that runs when the charger is connected or disconnected. ### Can you support Focus Filters? {#focus-filters} It is supported. [Focus Filters](https://support.apple.com/HT212608) are [broken on macOS 26.5 and later](https://developer.apple.com/forums/thread/826766) because of a macOS bug. ### Can you add iCloud syncing for the rules? {#icloud} No. iCloud syncing is unreliable, opaque, and significantly increases my support burden. Very few users request it, and for such a niche feature, the effort and ongoing cost are not worth it. You can already export and import rules manually. ### Can you add a vertical or circular browser prompt? I don’t plan to add this. I recommend giving the horizontal prompt a try. A lot of users found it to work better than vertical/circular. ### Does it support Handoff? {#handoff-support} Yes. It will open the handoff in the chosen primary browser. Note that it shows the Velja app icon for [Handoff](https://support.apple.com/en-vn/102426), not the chosen primary browser. There is no way to work around this. ### How can I set the last active browser as the default browser? You can use the [Shortery](https://apps.apple.com/app/id1594183810) and Shortcuts apps for this. Create a shortcut ([example](https://www.icloud.com/shortcuts/cca638ad5d8548dca7f2cbc8e7eb967b)) for each browser you use. The shortcut should use the “Set Default Browser” action to set the default browser in Velja. In Shortery, create an “Application” trigger for each browser, where you choose the corresponding shortcut and app in the “Application” field ([screenshot](https://www.dropbox.com/scl/fi/pjbimgvq3wtuvp0265vk6/Screenshot-2024-06-30-at-17.41.45-1719762112.png?rlkey=7qgwyxq2woz4zaeib1cs2r5w0&raw=1)). The default browser in Velja will now change when you focus one of those browsers. ### How can I see what URL Velja received? {#debug} Open the log (in the menu bar “…” menu) to see exactly what Velja did: which URL was received, what transformations were applied, which rules matched, and which browser was opened. The log is only active while the log window is open. Keep the log window open, click the problematic link, and read the entries in order. Global URL transformation entries show whether the script changed the URL, made no changes, or failed. When it changes the URL, the detail shows the URL before and after transformation. When rule matching runs, rules receive the URL on the right. You can also enable the link history in the advanced settings to keep a persistent record of opened URLs. To see more detailed debug info: Quit Velja if it’s open. Press Shift+Control while launching Velja, click the menu bar icon, click “Debug”, and then go to “Logs”. If a rule with a “source app” condition isn’t working, check the history to verify the source app matches what you expect. Some apps launch URLs through helper processes, causing a different app to appear. ### How can I open a URL in a specific Safari Tab Group? {#safari-tab-group} Safari does not provide any way to achieve this. You will have to send a [feature request to Apple](https://feedbackassistant.apple.com). Tell them they need to add support for opening a URL in a specific Safari Tab Group from AppleScript and Shortcuts. ### Some browsers are missing If the browsers are in the “~/Applications” folder or are browser profiles, see below. ### Velja does not show browsers from the user “~/Applications” folder Apple generally recommends putting apps in the global “/Applications” folder. Third-party apps like Velja get automatic access to this one, but not to the user “~/Applications” folder. Try clicking the “More › Reset Access” button in the Velja menu. ### I have Mastodon links set to open in a specific browser, but it opens in the Ivory app {#ivory-mastodon} Ivory supports [Universal Links](https://developer.apple.com/ios/universal-links/) for some Mastodon instances and Velja cannot override Universal Links. Universal Links is an annoying feature as it gives users (and other developers) no control over how it works. As of Ivory 1.0.0, it supports [these Mastodon instances](https://github.com/sindresorhus/meta/assets/170270/e256c5e1-5048-4cbc-8df2-aa09c969b639). ### How can I export, import, sync, transfer, or back up the settings? You can export and import rules in the settings. See the bottom of the “Rules” settings tab. For all settings, [see this](https://sindresorhus.com/apps/faq#export-settings). ### Can you support Safari profiles? {#safari-profiles} Safari does not expose any way to open URLs in a specific profile. I recommend [sending feedback](https://feedbackassistant.apple.com) to Apple that they should add Shortcuts and AppleScript support for this. More feedback increases the chances of it happening. *This is still the case on macOS 26.* Feel free to duplicate my feedback reports: - [FB12320822](https://github.com/feedback-assistant/reports/issues/398) - [FB12320895](https://github.com/feedback-assistant/reports/issues/399) You can submit it [here](https://feedbackassistant.apple.com). ### Can you support spaces for the Arc browser? {#arc} I would love to support [Arc](https://thebrowser.company), but it’s currently missing some required functionality. > [!NOTE] > They now support [something similar to Velja built in](https://x.com/browsercompany/status/1654525608305491984). Arc supports fetching the spaces of a specific Arc window using AppleScript. However, Velja needs to be able to fetch the spaces even when Arc has no open windows, so that it can show a list of spaces in the Velja settings. I recommend sending them feedback about this. Either through the feedback button in Arc or at [hello@thebrowser.company](mailto:hello@thebrowser.company). I have prepared a ready-made feature request text you can use: > It would be great if Arc could support getting a list of all the spaces with AppleScript. Currently, it’s possible to get the spaces of a specific window, but this only works when Arc has any windows open. Being able to get all spaces regardless of whether any Arc window is open is required for integration with apps like browser pickers (for example, Velja), which need to fetch all spaces and store them, so users can pick which space to use for different situations. I imagine it would be a top-level command like `tabs` and `windows`. If you want to help out more. This is another feature request. Nice to have, but not required: > It would be useful if it were possible to open a URL in a specific Arc space from the command-line. This would make it easier to integrate Arc with things like browser pickers and scripts. I imagine it could be something like this: `open -b company.thebrowser.Browser --new --args --space "F0366664-F475-40EC-9530-45CC511CE9A6" https://arc.net` Where the `--space` argument would accept a space identifier. *It’s true that it would be possible to implement a somewhat working solution with the current functionality, but that would not be a great user-experience and I don’t want to ship something that is not great.* ### Can you support browser profiles for the Arc/Dia browser? {#arc-profiles} The [Arc](https://thebrowser.company)/[Dia](https://www.diabrowser.com) browser is based on Chrome, so you may think that it should just work with browser profiles in Velja. However, Arc/Dia doesn’t support the `--profile-directory` command-line flag. So while Velja can fetch the profiles, it’s not able to actually use them. **Arc works differently from other browsers. In Arc, you use spaces. Each space can be assigned a certain profile. So it makes more sense to support spaces rather than profiles in Velja. See the above FAQ.** ### Can you support browser profiles for the Atlas browser? {#atlas-profiles} The [Atlas](https://thebrowser.company) browser is based on Chrome, so you may think that it should just work with browser profiles in Velja. However, unlike Chrome, Atlas stores the profile names in an encrypted file that Velja cannot access. **I encourage you to send feedback to Atlas about exposing the profiles names unencrypted so other tools can read them.** ### Can it open a specific browser when I double-click a file in the Google Drive folder in Finder? You can use the rules feature in the settings for this. 1. Create a rule with the source app set to `Finder` and the “URL Prefix” set to `google.com/open`. 2. Create a second rule with the source app set to `Google Drive` and the “URL Prefix” set to `docs.google.com/open`. ### Can the default browser change based on the macOS desktop Space I’m in? {#macos-spaces} No. macOS does not expose the active [Space](https://support.apple.com/guide/mac-help/work-in-multiple-spaces-mh14112/mac) to apps, so Velja cannot detect or react to it. Use per-app rules, or automate switching with Focus Filters or Shortcuts (see [Focus mode](https://sindresorhus.com/velja#focus-mode)) and triggers like time, Wi-Fi, or location. ### How can I open a website from Spotlight results in a specific browser? {#spotlight} Create a custom rule where you set the Spotlight app as “Source Apps”. The app is located at `/System/Library/CoreServices/Spotlight.app`. ### How can I open Google Meet links in a desktop app? You can choose an app to open Google Meet links in the “Apps” tab in the settings. The app must support these URLs. For example, create a Safari PWA from `https://meet.google.com/` using “Add to Dock”, then select the generated app in `~/Applications/Google Meet` in Velja. Chromium PWAs also work if you have the “open.sh” helper script set up (Settings › Advanced). ### I have both Firefox and Firefox Beta installed, but only one of them is showing up in Velja Firefox and Firefox Beta use the same [identifier](https://cocoacasts.com/what-are-app-ids-and-bundle-identifiers/). Velja uses the identifier to uniquely identify different apps. This means there cannot be multiple apps with the same identifier in Velja. This is not a problem with Velja. It’s just how macOS works. ### How do I disable Velja? [Change the system default browser back to Safari.](https://support.apple.com/HT201607) ### Can you add another menu bar icon option? Sure! Find an icon you like in the [SF Symbols app](https://developer.apple.com/sf-symbols/) or [here](https://thenounproject.com/icons/), and send me the name or a link. ### Why do I sometimes see a cog icon in the menu bar when opening a link? {#url-support-infoplist} Some apps support opening a URL but they don’t declare support for it. Velja must then use an alternative method to open the URL, which causes the cog icon to appear. If you notice the cog icon when opening a URL with an app, I recommend sending feedback to the developer of the app. Right-click and copy [this link](https://sindresorhus.com/velja#url-support-infoplist) to send to them. **To the developer. You must include this in the Info.plist of your app:** ```xml CFBundleURLTypes CFBundleTypeRole Viewer CFBundleURLSchemes https http ``` *You can optionally drop the `http` item if your app does not need to support that.* ### The Fn/Globe modifier key is not detected on my external keyboard {#fn-key-not-detected} Some third-party keyboards (e.g. Nuphy Air75) have a firmware issue where the Fn/Globe key-down event is only sent to macOS when the key is released, not when pressed. This means macOS cannot see the key as held down, so Velja cannot detect it. You can verify this with the [Key Codes](https://apps.apple.com/app/id414568915) app: enable “log key up events and modifier changes”, then press and hold the Globe key. On an affected keyboard, nothing appears until you release the key. This is a keyboard firmware problem. Contact the keyboard manufacturer about it. As a workaround, use a different modifier key (like Option) for the alternative browser trigger. Click the `(?)` button in the Velja settings. ### What does “Velja” mean? It means [“to choose”](https://en.wiktionary.org/wiki/velja) in [Old Norse](https://www.discovermagazine.com/planet-earth/what-language-did-the-vikings-speak) (also Icelandic and Faroese). Hence the Viking hat. ### Can you support iOS? {#ios} No: 1. **Not allowed:** Velja works by being the default browser, but iOS only [allows full browsers](https://developer.apple.com/documentation/xcode/preparing-your-app-to-be-the-default-browser) (like Safari or Chrome) to be set as default. 2. **Too slow:** Each link would first open Velja, then the actual browser. This is fast on macOS because Velja runs in the background, but not on iOS. ### How does it compare to Choosy? {#choosy} Velja benefits: - It can open Google Meet links in Chrome without any manual setup - It can open Mastodon links directly in a native Mastodon app - It can [open links to certain services](https://x.com/sindresorhus/status/1519020970027401216) in their desktop app (Zoom, Microsoft Teams, Figma, etc.) without any manual setup and without those apps supporting such links directly - Can [transform URLs before matching custom rules](https://sindresorhus.com/velja#global-url-transformation), so wrapped links can be routed based on their actual destination - Can show the icon of the active default browser in the menu bar - Removes tracking parameters on clicked and copied links - Open links in a private Safari window - Available in the App Store - Sandboxed (more secure) - Shortcuts support - Services support - Can choose menu bar icon - Convert copied links to [Songlink](https://odesli.co) for easy sharing [Choosy](https://www.choosyosx.com) benefits: - More options for custom rules ### How does it compare to Bumpr? {#bumpr} Velja benefits: - It can open Google Meet links in Chrome without any manual setup - It can open Mastodon links directly in a native Mastodon app - It can [open links to certain services](https://x.com/sindresorhus/status/1519020970027401216) in their desktop app (Zoom, Microsoft Teams, Figma, etc.) without any manual setup and without those apps supporting such links directly - Browser profile support - More advanced custom rules, like the ability to open a certain link based on what app the link was clicked in - Expands [short URLs](https://en.wikipedia.org/wiki/URL_shortening) for better matching - Can [transform URLs before matching custom rules](https://sindresorhus.com/velja#global-url-transformation), so wrapped links can be routed based on their actual destination - Can show the icon of the active default browser in the menu bar - Removes tracking parameters on clicked and copied links - macOS-like user interface (Bumpr has a custom non-macOS-like user interface) - You can open copied links from the menu bar menu - You can quickly switch the primary browser - You can press a keyboard shortcut to use an alternative browser for a specific link - Setting to hide the menu bar icon - Open links in a private Safari window - Shortcuts support - Handoff support - Services support - Share extension - Can choose menu bar icon - Convert copied links to [Songlink](https://odesli.co) for easy sharing [Bumpr](https://www.getbumpr.com) benefits: - Supports configuring the primary email app ### How does it compare to OpenIn? {#openin} Velja benefits: - It can open Google Meet links in Chrome without any manual setup - It can open Mastodon links directly in a native Mastodon app - It can [open links to certain services](https://x.com/sindresorhus/status/1519020970027401216) in their desktop app (Zoom, Microsoft Teams, Figma, etc.) without any manual setup and without those apps supporting such links directly - Can show the icon of the active default browser in the menu bar - Better user interface for browser profiles (OpenIn requires you to manually find the browser profile ID) - The user interface is more macOS-like and better follows the [Human Interface Guidelines](https://developer.apple.com/design/human-interface-guidelines/designing-for-macos) - You can open copied links from the menu bar menu - You can quickly switch the primary browser - You can press a keyboard shortcut to use an alternative browser for a specific link - Open links in a private Safari window - Browser extensions - Shortcuts support - Services support - Can choose menu bar icon - Convert copied links to [Songlink](https://odesli.co) for easy sharing [OpenIn](https://loshadki.app/openin/) benefits: - Supports configuring the primary app for more types, like email clients ### How does it compare to Browserosaurus? {#browserosaurus} Velja benefits: - Native app written in Swift (Browserosaurus is an Electron app — a web app) - Lower memory usage (Velja uses 36 MB and Browserosaurus uses 300 MB) - Lower CPU usage (Velja uses 0% CPU when idle and Browserosaurus uses 0.1-0.2%) - Available in the App Store - Sandboxed (more secure) - It can open Google Meet links in Chrome without any manual setup - It can open Mastodon links directly in a native Mastodon app - It can [open links to certain services](https://x.com/sindresorhus/status/1519020970027401216) in their desktop app (Zoom, Microsoft Teams, Figma, etc.) without any manual setup and without those apps supporting such links directly - Browser profile support - Can show the icon of the active default browser in the menu bar - Custom rules, like the ability to open a certain link based on what app the link was clicked in - Expands [short URLs](https://en.wikipedia.org/wiki/URL_shortening) for better matching - Can [transform URLs before matching custom rules](https://sindresorhus.com/velja#global-url-transformation), so wrapped links can be routed based on their actual destination - Removes tracking parameters on clicked and copied links - The user interface is more macOS-like and follows the [Human Interface Guidelines](https://developer.apple.com/design/human-interface-guidelines/designing-for-macos) - You can open copied links from the menu bar menu - You can quickly switch the primary browser - You can press a keyboard shortcut to use an alternative browser for a specific link - Finds new browsers automatically (Browserosaurus has to manually scan for new browsers) - Setting to hide the menu bar icon - Open links in a private Safari window - Browser extensions - Shortcuts support - Handoff support - Services support - Share extension - Can choose menu bar icon - Convert copied links to [Songlink](https://odesli.co) for easy sharing [Browserosaurus](https://github.com/will-stone/browserosaurus) benefits: - Open source ## Scripting {#scripting} The app can be automated using the Shortcuts app or with a custom URL scheme. ### Custom URL scheme You can open a URL using Velja from any tool that supports opening a URL. This includes a website, Bash, Node.js, Python, Swift, etc. For example, in your terminal: ```sh open 'velja:open?url=https%3A%2F%2Fsindresorhus.com&prompt' ``` Leave out `&prompt` to not show the browser prompt. *Don’t forget to [URL encode](https://www.urlencoder.org) the value for the `url=` parameter. For example, using [this](https://gist.github.com/cdown/1163649) Bash function.* > [!TIP] > You can specify the `url` parameter multiple times to open multiple URLs. You can force the use of a specific browser by specifying an `app` parameter: ```sh open 'velja:open?url=https%3A%2F%2Fsindresorhus.com&app=org.mozilla.firefox' ``` It expects the [bundle identifier](https://sindresorhus.com/apps/faq#find-bundle-identifier) of an app. Rules will be ignored when this is specified. You can also specify a browser profile by adding the `profile` parameter (Velja 2.1.0 and later): ```sh open 'velja:open?url=https%3A%2F%2Fsindresorhus.com&app=com.google.Chrome&profile=Work' ``` The `profile` parameter must be used together with the `app` parameter and expects the profile name (not ID). See the Velja settings for supported browsers. To open in a [supported browser’s private mode](https://sindresorhus.com/velja#supported-browsers-for-private-browsing), prefix its bundle identifier with `privateBrowser:`: ```sh open 'velja:open?url=https%3A%2F%2Fsindresorhus.com&app=privateBrowser:org.mozilla.firefox' ``` Private browser targets cannot be combined with the `profile` parameter. ### Change default browser in Velja from the command-line Run this command: ```sh defaults write com.sindresorhus.Velja defaultBrowser com.apple.Safari ``` Replace `com.apple.Safari` with the [bundle identifier](https://sindresorhus.com/apps/faq#find-bundle-identifier) of the browser you want. You can also use this trick to change the alternative browser by using `alternativeBrowser` instead of `defaultBrowser`. Use the special bundle identifier `com.sindresorhus.Velja.promptMarker` to set the prompt as the browser. ## Older Versions - [3.0.1](https://www.dropbox.com/scl/fi/r29c600toa048kwutn9h1/Velja-3.0.1-macOS-15-1770405022.zip?rlkey=t5vgfdoy5875j4eef74ifew5l&raw=1) for macOS 15 - [2.0.14](https://github.com/user-attachments/files/18629080/Velja.2.0.14.-.macOS.14.zip) for macOS 14 - [1.16.4](https://github.com/sindresorhus/meta/files/14577839/Velja.1.16.4.-.macOS.13.zip) for macOS 13 - [1.12.4](https://github.com/sindresorhus/meta/files/10895250/Velja.1.12.4.-.macOS.12.zip) for macOS 12 These are free for everyone but they will not run on newer macOS versions. --- # Folder Peek Put folders in your menu bar. URL: https://sindresorhus.com/folder-peek Open the files in your favorite folders with one click from the menu bar. Useful for project folders, downloads, screenshots, or anything else you use often.
**Features** - Add multiple folders to the menu bar - Each folder can be individually customized - File preview - View and copy image & video dimensions - Drag & drop files directly from the menu - Global keyboard shortcut to show/hide each folder menu (optionally opens at cursor position) - Open a file or folder in a specific app - Follows aliases and symlinks - Shortcuts support ### Guide {#guide} Folder Peek lets you put one or more folders in the menu bar. Make sure you read the below tips and FAQ. ## Tips - Click a file or folder in the menu to open it. Folders open in Finder. - Click a file while pressing the Option key to show it in Finder. - Click the folder title ([the top menu item](https://github.com/sindresorhus/meta/assets/170270/79c4e9c7-8abf-49da-b8fb-3a942017442e)) to open the folder. - You can drag files directly from the menu. You can also drag the file thumbnail in the file submenu. Press the Option key while dragging to copy instead of moving. - Press the Option key when viewing the file details to copy the path or image/video dimensions. - You can use the Shortcuts support to show/hide certain folders depending on what project you are working on. - If you have the menu bar item folders next to each other and you have one folder open, you can press Control+Tab or Shift+Control+Tab to switch between them. - In Settings, you can configure the keyboard shortcut to open the menu at the cursor position instead of at the menu bar icon. - Press the Option key while the menu is open to show the `…` menu item at the top if it normally is at the bottom. - Right-click or Option-click the menu bar item to open the folder. - Press the Shift key while viewing a subfolder to reveal more actions. For example, sort order settings. - Search: Just start typing when the menu is open to find a file or folder in the menu. This is just the standard menu behavior where you can type to highlight a certain menu item. It’s not a full-blown search. ### Links You can use Folder Peek to access links too. Drag and drop the URL from the Safari address bar into a folder. You will end up with a file with a `.webloc` extension. When you click that file in Folder Peek, it will open in your browser. ### Desktop folder You could add the “Desktop” folder to Folder Peek and then [hide the desktop icons](https://beebom.com/how-hide-desktop-icons-mac/) for a cleaner look. ## Frequently Asked Questions {#faq} ### Why is the app suddenly paid? It used to be free. While I love making free apps that are available to anyone, the high volume of support requests became unsustainable. After providing the app for free for 4 years with more than 50K downloads, I made the decision to make it paid. This isn’t about revenue. It’s about managing my time more effectively by reducing the support burden to a sustainable level. ### Some folders are suddenly missing from the menu bar When the menu bar has no space left, macOS hides overflowing items. Try quitting some menu bar apps. ### The menu bar icon is not perfectly vertically centered This is a macOS bug on non-Retina displays. There is unfortunately not much I can do about this. ### How can I show specific files and folders from various places? {#show-specific-items} You can create a folder that contains aliases to the files and folders you want to be included in the menu. Create a folder to put aliases in and add that folder to the app. Make aliases for the files and folders you want in the menu and move the aliases into the folder you just made. ### What is an alias? An [alias](https://support.apple.com/guide/mac-help/create-and-remove-aliases-on-mac-mchlp1046/mac) is a shortcut to an app, file, or folder that you can keep anywhere on your Mac. Right-click an item in Finder and select “Make Alias” to make one. ### How can I use this as an app launcher? {#app-launcher} Just add the “Applications” folder to the app if you want to show all your apps. If you want to show only certain apps, create a normal folder anywhere, for example on your Desktop. Then open the “Applications” folder in Finder, right-click each app you want, choose “Make Alias”, and move those aliases into the new folder. Finally, add that new folder to Folder Peek. ### How can I show multiple folders at the top level in a single menu? {#show-multiple-folders} See the “Can I show specific files and folders from various places?” answer. ### How can I show certain folders in the menu bar depending on what I’m working on? {#faq-shortcuts} You can create a shortcut in the Shortcuts app using the “Set Folder Visibility” action where you show only certain folders. For example, you could make a shortcut named “Start Work” which hides your personal folders in the menu bar and shows folders for your work projects. Use Shortcuts automations to run this shortcut at a certain time or on any other condition. ### How can I drag & drop a file from the menu? You can drag & drop files directly from the menu. Press the Option key while dragging to copy instead of moving. ### How can I copy the file path? {#copy-file-path} Press the Option key while viewing a file to reveal a “Copy Path” button. ### How can I copy the image/video dimensions? Press the Option key while viewing an image or video to reveal a “Copy Dimensions” button. ### How can I change the sort order for a subfolder? Press the Shift key while viewing a subfolder to reveal more actions, including a sort order setting. ### How can I have a menu bar folder with my most recent screenshots? Make a folder to hold the screenshots and add the folder to the app. Open the Screenshot app, click “Options”, then “Other Location”, and choose the folder you just made. In Folder Peek, open the folder config, change the sort order to “Date Created”, and set “Max Items” to something like 20. You may also want to [disable the screenshot preview](https://osxdaily.com/2019/08/02/disable-screenshot-thumbnail-preview-mac/) so the screenshot shows up in the screenshot folder right away. ### How can I add a Smart Folder? {#smart-folder} A [Smart Folder](https://support.apple.com/guide/mac-help/create-or-change-a-smart-folder-on-mac-mchlp2804/mac) is a special feature in Finder that allows you to create a virtual folder based on specific search criteria. The files within the Smart Folder are not physically stored in one location, but rather are located in different areas of your computer. Unfortunately, it is not possible to add a Smart Folder to Folder Peek as the functionality cannot be replicated. ### How do I remove a folder from Folder Peek? - **Individual menu bar items mode:** Click the menu bar item, go to the first menu item (which is named after your folder), go to its submenu, and then select “Remove Folder”. - **Single menu bar item mode:** In Settings, right-click the folder to reveal the “Remove” option. ### Can I navigate to a folder multiple levels deep and then drop a file into it? No, that is unfortunately not possible. Folder Peek is built as a system menu, and a menu cannot be kept open if it’s not focused. Instead, first, navigate to the nested folder, click to open it in Finder, and then drag & drop the file into the Finder window. ### Can I drag & drop files into a folder listed in the menu? {#drop-into-folder} No. The app supports dragging files *out* of the menu, but not dropping files *into* it. macOS menus do not support receiving drops. To move a file into a folder listed in the app, first click the folder in the menu to open it in Finder, then drag the file into the Finder window. ### Can it auto-mount a network volume when accessing it? {#network-volume} No, this is not possible because of [sandboxing](https://sindresorhus.com/apps/faq#macos-sandbox). To use a network volume in the app, you need to either mount it manually first or use a tool like [AutoMounter](https://pixeleyes.co.nz/automounter/) to keep it always mounted. ### Can it support adding a tag instead of a folder? No. This is not planned. ### The app I want does not show up in the “Open With” menu for a folder {#folder-open-with} Apps define the types they support and Folder Peek just fetches a list of apps that support opening folders. However, many apps forget to declare support for folders even though they can open them. I would encourage reporting this to the developers of the app you want to open ([example report](https://github.com/microsoft/vscode/issues/146977)). In the meantime, I’m happy to manually add the app to the list if you contact me, but you are expected to also have reported the issue to the app’s developers. The app developer will need to add `public.folder` to `LSItemContentTypes` in their app’s Info.plist: ```xml LSItemContentTypes public.folder ``` ### Can it open folders in Path Finder instead of Finder? {#path-finder} Yes. Enable the “Set as the default file browser” setting in Path Finder. Folder Peek opens whichever app is the default folder handler, so once Path Finder is set as the default, it will be used automatically. Any questions about this should be asked in the Path Finder support channels. ### How can I make folders open in a different app than Finder by default? {#finder-alternative} Folder Peek opens the default app that handles folders, which is Finder by default. - **Path Finder:** Enable the “Set as the default file browser” setting in Path Finder. - **ForkLift:** [Follow this guide.](https://binarynights.com/manual#fileviewer) For other apps, follow [this guide](https://binarynights.com/manual#fileviewer), but replace `com.binarynights.ForkLift-3` with the bundle identifier of the app you want. ### How can I hide the `…` menu item? There is a hidden setting for it. Run the following command in the Terminal app: ```sh defaults write com.sindresorhus.Folder-Peek showFolderMoreMenu -bool false ``` You can show the `…` menu item again by pressing the Option key. ### How is this better than having folders in the Dock? {#dock-folders} Compared to [folders in the Dock](https://support.apple.com/guide/mac-help/use-folders-in-the-dock-mchl231f08fb/mac): - Slightly faster access, since most users have the Dock automatically hidden and the menu bar always shown. - File preview. - Copy and share a file. - View and copy image/video dimensions. - Open a file or folder in a specific app. - Keep folders on top. - Sort by when the file was last accessed. - Show the menu using a custom global keyboard shortcut. - Limit the number of items shown in the menu. - Shortcuts support. ### How is this better than XMenu? {#xmenu} Compared to [XMenu](https://apps.apple.com/us/app/xmenu/id419332741): - You can choose any folder and as many as you want, not just a few predefined ones and a single custom folder. - Each folder can be individually customized. - Sandboxed app (more secure). - Custom menu bar icon. - File preview. - Copy, share, and drag & drop a file. - View and copy image/video dimensions. - Open a file or folder in a specific app. - Sort files by date created, date modified, date accessed, date added, and kind. - Show the menu using a custom global keyboard shortcut. - Limit the number of items shown in the menu. - Shortcuts support. ### Can I add shortcuts or scripts to the menu? {#short-run} The app is for folders only. However, I have an app for exactly this: [Short Run](https://sindresorhus.com/short-run), which lets you run shortcuts from the menu bar. ### How can I export, import, sync, or back up the settings? [See this guide.](https://github.com/sindresorhus/guides/blob/main/backup-app-settings.md) ## Older Versions - [1.12.0](https://www.dropbox.com/scl/fi/hlyb11lf2m65st8daptme/Folder-Peek-1.12.0-macOS-15-1775931438.zip?rlkey=7bykzpnc4iik0izgibhxx1sxo&raw=1) for macOS 15 - [1.11.5](https://github.com/user-attachments/files/18925258/Folder.Peek.1.11.5.-.macOS.14.zip) for macOS 14 - [1.9.2](https://github.com/sindresorhus/meta/files/13980050/Folder.Peek.1.9.2.-.macOS.13.zip) for macOS 13 - [1.6.1](https://github.com/sindresorhus/meta/files/10901140/Folder.Peek.1.6.1.-.macOS.12.zip) for macOS 12 These are free for everyone but they will not run on newer macOS versions. --- # Pure Paste Paste as plain text by default. URL: https://sindresorhus.com/pure-paste Copy text from a web page or a document, and paste it without the fonts, colors, and links. Pure Paste clears the formatting (fonts, colors, bold, links, tables, etc.) in the background as you copy, and leaves files, images, and passwords from password managers alone. Beyond basic formatting removal, Pure Paste can also remove invisible characters (including AI watermarks), normalize quotes and lists, remove tracking parameters from URLs, and much more. You can also choose to manually clear formatting whenever needed instead of automatically. You can right-click the menu bar icon to toggle automatic mode or clear formatting (like Plain Clip).
#### Limitations Rich text copied from a different device will not have its formatting cleared because of a bug in Universal Clipboard. ## Tips - Right-click the menu bar icon to toggle the “Automatically clear formatting” setting. ## Frequently Asked Questions {#faq} ### Why not just use the `Paste and Match Style` menu item or `⌥⇧⌘V`? - This app can make it the default behavior. - That menu item is not available in all apps. - The keyboard shortcut is hard to remember and type. - In some apps, like Chrome, the keyboard shortcut is different. - This app can exclude certain apps, preserve links, normalize (quotes, newlines, lists, etc.) and also remove tracking parameters from URLs. - The app has workarounds (9000+ lines of code) for lots of apps to make the experience *just work*. ### Why not just remap the `Paste and Match Style` keyboard shortcut to `⌘V`? Same as the above except the first two list items. ### The app does not show up in the menu bar [Try this](https://sindresorhus.com/apps/faq#app-not-showing-in-menu-bar) You may also have enabled the “Hide menu bar icon” setting, which hides the menu bar icon. Launch the app again to reveal the menu bar item for 5 seconds. ### The app does not work - Ensure automatic clearing is enabled or you have set a keyboard shortcut for clearing. - Ensure you have not excluded (in the settings) the app you want to use it with. - Try copy-pasting to/from a different app to ensure the problem is with Pure Paste. - If you are using a custom keyboard shortcut for clearing, try [resetting privacy permissions](https://sindresorhus.com/apps/faq#mac-reset-permissions). - If you have “Preserve links” enabled, try disabling it. When links are preserved, all styling is cleared but the clipboard remains rich text. Some apps restyle rich text anyway. - Verify that Pure Paste actually cleared formatting by using my [Pasteboard Viewer](https://sindresorhus.com/pasteboard-viewer). If you see the item `com.sindresorhus.Pure-Paste.hasRun` in the sidebar, Pure Paste worked. Any remaining formatting is added by the app you paste into. Some apps do this even for plain text. - [More…](https://sindresorhus.com/apps/faq#app-problem) ### Pure Paste conflicts with my clipboard manager This is a known issue. It’s just a flaw in how the clipboard works. If your clipboard manager reads the clipboard first, it will get it. If Pure Paste then reads the clipboard, it will do its thing, but also tell clipboard managers not to fetch the new contents as otherwise, they might end up with duplicates. This is required as otherwise certain features like “fast-append” don’t work in Alfred and other clipboard managers. I’m working on a way all apps can collaborate, but it will take some time. For now, I suggest setting a keyboard shortcut for “Clear formatting and paste” and then turning off “Automatically clear formatting”. ### The app clears formatting when it shouldn’t or doesn’t clear formatting when it should {#clear-formatting-problem} [Let me know.](https://sindresorhus.com/feedback?product=Pure%20Paste&referrer=Website-FAQ) I will fix it quickly, if possible. There are some cases I cannot fix though: - **The Pages and Keynote apps paste text as a table.** These apps paste any text with multiple lines as a table. This is not a problem with Pure Paste and is also not something I can fix. You can complain to Apple about the behavior [here](https://www.apple.com/feedback/pages.html). - [**Tables in Word are not preserved.**](https://sindresorhus.com/pure-paste#word-tables) - Formatting is not cleared when copying and pasting inside LibreOffice. This is a LibreOffice bug. Pure Paste correctly clears the formatting of the clipboard contents, but LibreOffice does not read the new clipboard contents until you first focus a different window. Try copying some styled text in LibreOffice, focus a different window, focus LibreOffice again, and then paste. It now correctly pastes the text without formatting. - Mail app: Formatting is cleared but does not match the style used for emails. Pure Paste correctly clears the formatting, but the Mail app does not correctly make text without formatting match the existing style. ### The copy/paste custom keyboard shortcut does not work Try [resetting privacy permissions](https://sindresorhus.com/apps/faq#mac-reset-permissions) for the app. macOS can sometimes corrupt these permissions, causing the shortcut to fail. ### What are tracking parameters and why would I want to remove them? Removing tracking parameters improves privacy and also makes URLs more aesthetically pleasing. Tracking parameters are used by many websites to track your browsing activity across websites. [Learn more.](https://en.wikipedia.org/wiki/UTM_parameters) Pure Paste supports 200+ common tracking parameters (e.g. Google UTM) and it has special support for removing tracking from links to X (Twitter), Facebook, and TikTok. Before: `https://foo.com?utm_content=buffercf3b2&utm_source=snapchat.com`\ After: `https://foo.com` Did you know that if you click a TikTok link that someone shared with you, they will be able to see that you watched it? Pure Paste anonymizes TikTok links so that you will not be tracked. ### Tracking parameters are not removed {#tracking-parameters-not-removed} First, make sure the setting to remove tracking parameters is enabled. Tracking parameters are not removed if the “Automatically Clear Formatting” preference is disabled or you did not manually trigger format clearing. The app contains a list of tracking parameters to remove, but there may be site-specific tracking parameters it doesn’t know about. If you encounter any tracking parameters not being removed, [let me know](https://sindresorhus.com/feedback?product=Pure%20Paste&referrer=Website-FAQ) and I’ll add support for them. ### Can you add a setting to preserve bold and italic? In short, no. To preserve bold and italic, the app has to preserve the font too, and by preserving the font, it has to set a font name and size. This means the text will not match the destination formatting. Instead, for example, in Word, you can copy with formatting and select “Paste and Match Formatting”, which correctly preserves bold and italic while clearing color and sizes. ### I have “Preserve links” enabled, and when I paste into an app (for example, Mimestream), it ends up with the “Times New Roman” font instead of the system font When “Preserve links” is enabled, Pure Paste removes formatting but keeps the text as rich text instead of plain text. Some apps don’t handle this properly and default to “Times New Roman”. The only workaround is to disable “Preserve links”. ### I have “Preserve links” enabled, and when I paste into Word, it ends up with the “Times New Roman” font instead of the existing font {#word-bug} This is a bug in Word. ~~Please upvote [this report](https://feedbackportal.microsoft.com/feedback/idea/614f1602-cdd8-ec11-a81b-000d3a03dba2).~~ (Update: They removed the bug report and blocked me there 🤷‍♂️) As a workaround, you can either disable the “Preserve links” setting or use “Paste and Match Formatting” in the “Edit” menu in Word. ### I have “Preserve links” enabled, and when I paste into an app, it ends up with the “Helvetica” font instead of the existing font {#helvetica-bug} This is a bug in macOS. As a workaround, you can either disable the “Preserve links” setting or use “Paste and Match Style” in the “Edit” menu of the app. If you work for Apple or want to help out by duplicating my reports, see: - [FB10023436](https://github.com/feedback-assistant/reports/issues/307) - [FB10023420](https://github.com/feedback-assistant/reports/issues/306) - [FB10023393](https://github.com/feedback-assistant/reports/issues/305) ### Excel, Word, and PowerPoint are missing some actions in “Paste Options” {#office-apps} Pure Paste works by modifying the clipboard. Office hides most of the “Paste Options” actions if the clipboard is modified. The solution is to either: 1. Exclude the Office apps in the Pure Paste settings. 1. Turn off “Automatically Clear Formatting” and instead set a keyboard shortcut in the settings. That way the clipboard stays unmodified until you use the keyboard shortcut to clear & paste. ### Tables are not preserved when I copy-paste in Word {#word-tables} There is no way to preserve tables while clearing formatting of their cell contents. Different apps have different ways to represent tables on the clipboard. When you need to preserve a table, just temporarily disable Pure Paste. See the “Automatic clear formatting” setting on how to skip format clearing once. You can also right-click the menu bar icon to enable/disable automatic format clearing. Or set a global keyboard shortcut. ### Why doesn’t cutting work in Excel when Pure Paste is active? Excel has unique (incorrect) interactions with the clipboard, which is incompatible with Pure Paste. When you cut text in Excel, the app puts metadata on the clipboard that a cut operation is being performed. Pure Paste, designed to remove formatting from copied text, inadvertently clears this info when it cleans the clipboard. The result is that Excel thinks it’s a copy operation instead. You can either add Excel to the exclude list in the Pure Paste settings or turn off automatic format clearing and set a “clear formatting and paste” keyboard shortcut instead. ### The app does not clear formatting when copy-pasting an image inside Google Docs Web apps do not follow the standard clipboard conventions that native desktop apps do. When you copy an image in Google Docs, it just puts a bunch of HTML code on the clipboard. Pure Paste cannot easily know it’s an image you copied. ### The app does not clear formatting when copy-pasting rich text inside Figma {#figma} Web apps do not follow the standard clipboard conventions that native desktop apps do. When you copy some rich text in Figma, it just puts a bunch of HTML code on the clipboard. Pure Paste cannot easily know it’s rich text you copied. ### The app does not preserve links when pasting into Google Docs even with the “Preserve links” setting enabled There is a [problem with Google Docs](https://webapps.stackexchange.com/questions/69248/is-there-a-way-to-paste-rtf-text-into-google-document) where it strips links from rich text content. It happens even without Pure Paste. Web apps are generally bad at following platform conventions. ### Copying a cell with a formula in Numbers or Excel loses the formula {#numbers-formula} Pure Paste clears formatting by replacing the clipboard with a plain text version (this is the only reliable way to clear formatting). However, some apps store metadata on the clipboard, and in this specific case, these apps store the formula as metadata in the clipboard, which is then lost. There is no reliable way to detect this. The solution is to either: 1. Skip clearing formatting for just this copy (see instructions in the app settings). 1. Exclude the app in the Pure Paste settings. ### The exclude setting does not work Copy something from the app you have excluded, press the Option key while clicking the Pure Paste menu bar item, and then make sure the app shown in the menu is the same as the one you excluded. ### How can I exclude certain websites? This will not be supported. A workaround would be to [turn the website into an app in Safari](https://support.apple.com/guide/safari/add-to-dock-ibrw9e991864/mac). You could then exclude that app. The need for such a setting only arises because many web apps do not adhere to platform clipboard standards, unlike native apps. ### Can it support pasting with formatting when pressing Command+Shift+V? The app technically clears formatting when something is copied not pasted, so the formatting is already cleared when that shortcut is pressed. ### Can I quickly toggle “Preserve links” or some other setting? {#toggle-setting} Yes, with the Shortcuts app. Create a shortcut with the “Change Pure Paste Settings” action in Shortcuts. Pin it to the Shortcuts menu bar or assign a global keyboard shortcut in Shortcuts. ### Formatting is not cleared when I copy text from a PDF {#pdf-formatting} This is expected. Text in a PDF is almost always plain text already, so there is no rich text formatting (fonts, colors, bold, links, etc.) for Pure Paste to clear. What you are most likely seeing instead are line breaks in the middle of sentences, words split with hyphens across lines, or uneven spacing. These are not formatting; they are part of the PDF’s page layout and are baked into the text as real characters. Clearing formatting cannot remove them, because there is no formatting involved. If you want to clean up the line breaks, see [removing newlines/linebreaks](https://sindresorhus.com/pure-paste#removing-newlines) below. ### Can you add support for removing newlines/linebreaks? {#removing-newlines} The app is designed to *just work*, but removing newlines is not suitable for all use cases. For instance, you may want to remove newlines when copying text from a PDF, but not from Word. If you still want this feature, add the following to the “JavaScript” setting: ```js return $.text.replace(/(\r?\n)/gm, ' '); ``` And if you want to preserve paragraphs, use: ```js return $.text.replace(/([^\r\n])(?:\r?\n)(?!\r?\n)/g, '$1 '); ``` ### Can I temporarily pause “Automatically clear formatting”? Not built in. You can run [this shortcut](https://www.icloud.com/shortcuts/38ed17936c784768a36b6220700260cc) from Spotlight that disables “Automatically clear formatting”, waits 5 minutes, then re-enables it. ### Does it respect nspasteboard.org conventions? Yes, it follows the [nspasteboard.org](http://nspasteboard.org) conventions, so it ignores concealed (passwords), transient, and auto-generated content. ## Older Versions - [1.13.2](https://www.dropbox.com/scl/fi/jn1xiyns80ea9jp4g16zx/Pure-Paste-1.13.2-macOS-15-1771414631.zip?rlkey=ah6wly1apojlb1paes5zi9dh6&raw=1) for macOS 15 - [1.11.4](https://github.com/user-attachments/files/18969765/Pure.Paste.1.11.4.-.macOS.14.zip) for macOS 14 - [1.9.2](https://github.com/sindresorhus/meta/files/14350035/Pure.Paste.1.9.2.-.macOS.13.zip) for macOS 13 - [1.6.4](https://github.com/sindresorhus/meta/files/10793621/Pure.Paste.1.6.4.-.macOS.12.zip) for macOS 12 These are free for everyone but they will not run on newer macOS versions. --- # One Thing Put a single task or goal in your menu bar. URL: https://sindresorhus.com/one-thing Write the one task or goal that matters most today, and see it in your menu bar all day. A quiet reminder to focus on one thing at a time. Some examples of what you could write: - Eat more healthily - Exercise - Reply to Sara’s email - Be happy - Stop procrastinating - Finish the 🦄 project - Important meeting today However, what you use this space for is really up to you.
> You can achieve almost anything in life — as long as you focus on achieving one thing at a time. It’s a time-tested strategy that’s been shared by many successful people. — [https://dariusforoux.com/one-thing/](https://dariusforoux.com/one-thing/)
> [!TIP] > You may also like my [Any Text](https://sindresorhus.com/any-text) and [One Task](https://sindresorhus.com/one-task) apps.
### Mentions - [10 Mac Apps That Will Change How You Use macOS in 2026](https://www.youtube.com/watch?v=LtuUwACZdsQ&t=108s) ## Tips - Press return/esc or click the menu bar item to close the edit window. - Click the menu bar item while pressing shift to clear the text. - Right-click the menu bar item to be able to quit the app quickly. - If the menu bar item text is truncated, hover over it to see the full text in a tooltip. - You can use [Markdown](https://www.markdownguide.org/basic-syntax/#emphasis) to [style the text](https://x.com/sindresorhus/status/1481818533294407680) (supports bold, italic, and strikethrough) and add links. - You can [drag & drop text](https://x.com/sindresorhus/status/1481862243755376642) onto the menu bar item to set it. For example, you could drag a todo item from the Reminders app or Things. - Select some text in any app, right-click, select “Services”, and click “Send to One Thing” to set One Thing to the selected text. You can also use the “Share” menu item if the app supports that. ## Frequently Asked Questions {#faq} ### The menu bar item has disappeared! macOS hides menu bar items that do not fit. [Click here](one-thing:?text=) to reset the text. ### I made the text too long and now the menu bar item is hidden [Click here](one-thing:?text=) to reset the text. ### The text looks blurry or is not dimmed on my secondary display [See this answer](https://sindresorhus.com/apps/faq#menu-bar-secondary-display) ### How is this different from your One Task app? {#one-task-difference} See [this answer](https://sindresorhus.com/one-task#one-thing-difference). ### Can I execute an action when I click the text? You can add a [link using Markdown](https://www.markdownguide.org/basic-syntax/#links). ### What if I have two things? The point is to focus on one thing at a time. [Humans work best this way.](https://dariusforoux.com/one-thing/) However, nothing is stopping you from writing two things, for example, with a `·` character in-between. ### Can I have two instances of One Thing running at the same time? {#one-thing2} I have made a special version of One Thing with a different identifier. You can run this together with the App Store version. It also has separate Shortcuts actions and URL scheme: `one-thing2:`. This version will not receive updates. [Download](https://www.dropbox.com/scl/fi/pn3k0r6edea21my7beqz3/One-Thing-2-1.11.0-1684349283-1701610241.zip?rlkey=qgv6rmx9bitjki4xbh05tn2ty&raw=1) ### How can I show the next task in the “Today” list in Things in One Thing? {#things} You can use the Shortcuts app for this. Here is an [example shortcut](https://www.icloud.com/shortcuts/7f8a4cc8764348518c5b7774d60191cc) that sets the next todo in “Today” as the text in One Thing. To have the shown todo stay in sync with [Things](https://culturedcode.com/things/), use the [Shortery](https://apps.apple.com/app/id1594183810) app to run the shortcut when Things becomes inactive. Alternatively, place the shortcut in the menu bar and run it manually, or use [Short Run](https://sindresorhus.com/short-run). ### How can I show the upcoming reminder from the Reminders app in One Thing? {#reminders} You can use the Shortcuts app for this. Here is an [example shortcut](https://www.icloud.com/shortcuts/4bed5f56a0f94e9a9e9ba05c97c6e64b). To have the shown todo stay in sync with Reminders, use the [Shortery](https://apps.apple.com/app/id1594183810) app to run the shortcut when Reminders becomes inactive. Alternatively, place the shortcut in the menu bar and run it manually, or use [Short Run](https://sindresorhus.com/short-run). ### How can I show a todo from my favorite todo app in One Thing? Do something similar to the above answer. ### How can I show a random quote in the menu bar? {#quote} You can use the Shortcuts app for this. Here is an [example shortcut](https://www.icloud.com/shortcuts/35d88a7b56154893bd2e28e3988410f1). Use a Shortcuts automation to run the shortcut at certain times to change the quote. ### How can I put spacing on the sides of the text? You can add some horizontal padding around the text by adding multiple spaces to the “Prefix” and “Suffix” settings. ### How can I show different text for each day of the week? You can use the macOS Shortcuts app for this. Make a shortcut for each piece of text you want to be shown by using the “Set Text” action provided by One Thing. Then use Shortcuts automations to run these shortcuts on the specific days. ### Can you add iOS / watchOS support? I plan to do it if the app takes off. So tell your friends. ### How can I export, import, sync, or back up the settings? [See this guide.](https://github.com/sindresorhus/guides/blob/main/backup-app-settings.md) ### Is the app native? Yes, it’s native and written in Swift and SwiftUI. ## Scripting The app can be automated using the Shortcuts app or with a custom URL scheme. More integrations: - [Command-line tool](https://github.com/sindresorhus/one-thing) - [Node.js API](https://github.com/sindresorhus/one-thing) - [Raycast commands](https://github.com/raycast/script-commands/tree/master/commands#one-thing) - Note: Raycast commands are not the same as plugins. [How to install commands.](https://github.com/raycast/script-commands#install-script-commands-from-this-repository) ### Shortcuts app - [Example shortcut](https://www.icloud.com/shortcuts/381619f1c8404770ad020d439a48fd9c) - [Shortcuts usage guide](https://www.xda-developers.com/guide-shortcuts-macos/) - [How to run shortcuts from the command-line](https://support.apple.com/guide/shortcuts-mac/run-shortcuts-from-the-command-line-apd455c82f02/mac) **Examples** - [Reminders app: Show latest due reminder](https://www.icloud.com/shortcuts/5d3e63030877471697dd0023fefc4819) - [Things app: Show the first todo in the “Today” list](https://sindresorhus.com/one-thing#things) ### Custom URL scheme The menu bar item text can be set from any tool that can open an URL. This includes a website, Bash, Node.js, Python, Swift, etc. For example, in your terminal: ```sh open --background 'one-thing:?text=Exercise' ``` *Don’t forget to [URL encode](https://www.urlencoder.org) the value for the `text=` search parameter. For example, using [this](https://gist.github.com/cdown/1163649) Bash function.* There is no way to get the text using the URL scheme, but if you are in the terminal, you can run this command: ```sh defaults read com.sindresorhus.One-Thing text ``` ## Older Versions - [1.13.2](https://www.dropbox.com/scl/fi/s092qpp3p5s77gnjsyty3/One-Thing-1.13.2-macOS-15-1770923231.zip?rlkey=big014nrx8xrw4mwfnxwxbmxy&raw=1) for macOS 15+ - [1.12.2](https://github.com/user-attachments/files/19145029/One.Thing.1.12.2.-.macOS.14.zip) for macOS 14+ - [1.11.3](https://github.com/sindresorhus/meta/files/14759175/One.Thing.1.11.3.-.macOS.13.zip) for macOS 13+ - [1.9.0](https://github.com/sindresorhus/meta/files/11081660/One.Thing.1.9.0.-.macOS.12.zip) for macOS 12+ ## Non-App Store Version A special version for users that cannot access the App Store. It won’t receive automatic updates. I will update it here once a year. [Download](https://www.dropbox.com/scl/fi/4d3zqtuj4j2erm6ck80ei/One-Thing-2.0.2-1778696587.zip?rlkey=s2h6g802mi674wkg7s5olfb9l&raw=1) *(2.0.2)* *Requires macOS 26 or later* --- # Speediness Check your internet speed. URL: https://sindresorhus.com/speediness Quickly check your internet connection speed, ping, and [RPM](https://sindresorhus.com/speediness#rpm). ## Tips ### Show the current internet speed in the menu bar {#menu-bar-output} Speediness output in the menu bar You will need the [One Thing](https://sindresorhus.com/one-thing) app. Add [this shortcut](https://www.icloud.com/shortcuts/d073ad4fd89f4c9cb110795780ed2377) and then use the [Shortery](https://apps.apple.com/app/id1594183810) app to run it at an interval, as Shortcuts automations cannot do that. I would recommend an interval higher than 10 minutes. Tip: If you have limited space in the menu bar, you could switch the info shown in One Thing at an interval too. For example, you could show the internet speed for 10 minutes and then the weather for the next 10 minutes. ## Frequently Asked Questions {#faq} ### Why does it show different result from other tools? {#different-result} By default, tests are run in parallel to better reflect real-world situations (video chat and voice calls). Because of this, speeds may differ from other tools. You can change this in the settings. ### How does it compare to Speedtest by Ookla? {#ookla} The Speedtest app uses a nearby server, which means the speed does not reflect real-world usage — it shows the most optimal scenario. Its requests are also often prioritized by ISPs, which skews the numbers even more. Speediness also looks more like a proper macOS app and it has support for Shortcuts. ### How does it compare to fast.com? {#fast} The problem with fast.com is that it’s run by Netflix, and Netflix’s servers are often prioritized (and sometimes throttled), meaning you won’t always get a realistic value. It pretty much gives you your speed for watching Netflix. ### What does the responsiveness (RPM) value mean? {#rpm} It’s a measurement called Round-trips Per Minute (RPM) — the number of sequential round-trips a network can do in one minute under normal working conditions. [Learn more](https://support.apple.com/HT212313) ### What does the ping value mean? It’s a measurement of the round-trip time for messages sent from the originating host to a destination computer that are echoed back to the source. `ms` is the symbol for milliseconds. [Learn more](https://xtrium.com/what-is-a-good-ping-speed/) ### Why should I trust the results? The app makes use of the built-in [`networkQuality` command-line tool](https://support.apple.com/HT212313) under the hood, which is provided by Apple. ### Can it show a progress bar instead of a spinner? No, a progress bar would not accurately reflect progress due to the variability in testing time, which depends on factors like network speed and other unknown conditions. ### Can it measure packet loss? {#packet-loss} No. The app relies on Apple’s built-in `networkQuality` tool, which does not measure or report packet loss. There are no plans to add this. ### Does it measure jitter? {#jitter} No. Jitter sounds useful, but it rarely adds actionable insight. If jitter is bad, you’ll see it immediately through unstable latency and low responsiveness. If responsiveness is high, jitter is already in a safe range. A separate jitter number wouldn’t change what you can do with the result. ### How can I run it from the menu bar? Open the Shortcuts app, create a new shortcut, and then drag the “Get Internet Speed” action into the shortcut editor. Enable the “Pin in Menu Bar” shortcut setting. You can now run speed tests directly from the Shortcuts icon in the menu bar. ### How can I run the speed test automatically every hour? {#scheduled} Open the Shortcuts app, create a new shortcut, and then drag the “Get Internet Speed” action into the shortcut editor. You may want to enable the “Add to History” action setting. Use the [Shortery](https://apps.apple.com/app/id1594183810) app to run this shortcut every hour or at an interval of your choosing, as Shortcuts automations cannot run at an interval. ### Can you add support for iOS? {#ios} This is unfortunately not possible at this time as the app relies on the built-in [`networkQuality` command-line tool](https://support.apple.com/HT212313), which does not exist on iOS. Someone would have to implement the [“Responsiveness under Working Conditions” RFC](https://datatracker.ietf.org/doc/draft-ietf-ippm-responsiveness/) in Swift. [Reference implementation in Go.](https://github.com/network-quality/goresponsiveness) Let me know if you end up making a Swift package for this. ### Can you make a command-line tool for this app? This app uses the built-in [`networkQuality` command-line tool](https://support.apple.com/HT212313) under the hood. You can use it too. ### Is the app native? Yes, it’s native and written in Swift and SwiftUI. ## Older Versions - [1.8.1](https://www.dropbox.com/scl/fi/84jjd5hqfhdp9sv76jb9a/Speediness-1.8.1-macOS-15-1770360327.zip?rlkey=v8tc9r4r7iz9kqfjyksfdwri2&raw=1) for macOS 15+ - [1.7.2](https://github.com/user-attachments/files/18912491/Speediness.1.7.2.-.macOS.14.zip) for macOS 14+ - [1.6.1](https://github.com/sindresorhus/meta/files/13965129/Speediness.1.6.1.-.macOS.13.zip) for macOS 13+ - [1.5.0](https://github.com/sindresorhus/meta/files/10847708/Speediness.1.5.0.-.macOS.12.zip) for macOS 12+ ## Non-App Store Version A special version for users that cannot access the App Store. It won’t receive automatic updates. I will update it here once a year. [Download](https://www.dropbox.com/scl/fi/xt04xgqt32n6ekqdao10b/Speediness-2.0.0-1770359964.zip?rlkey=d16dzbs51ys756sb2cw49merv&raw=1) *(2.0.0)* *Requires macOS 26 or later* --- # Actions Additional actions for the Shortcuts app. URL: https://sindresorhus.com/actions Adds 180+ free actions to the Shortcuts app on macOS, iOS, and visionOS. They do what the built-in actions cannot, and turn long shortcuts into a few steps. > [!IMPORTANT] > Restart your device if the actions do not show up in the Shortcuts app. [Learn more ›](https://sindresorhus.com/actions#actions-not-showing-up) If you have any questions about how to use the different actions or for what, try asking the [Actions GPT bot](https://chatgpt.com/g/g-6746353a017881918cceb0761aea3bfe-actions-app-companion). And if you want to feed your own AI, [here is the source data](https://gist.githubusercontent.com/sindresorhus/fbba65a774fb9da915e624807a02a6d2/raw/7be21a65977b6dd82d1a6cc34be4476df057ea06/actions.md). --- > [!TIP] > On macOS, also check out [Shortcutie](https://sindresorhus.com/shortcutie) for advanced actions and [Short Run](https://sindresorhus.com/short-run) for running shortcuts from the menu bar. --- #### Included actions - Add to List - Apply Capture Date - Ask for Duration - Ask for Input with Dialog :: Show a dialog with a text field and multiple buttons. Returns both the entered text and which button was tapped, with support for timeout, custom icon (macOS), image, and destructive button styling. You can disable the text field to just have a confirmation dialog. - Ask for Text with Timeout - Authenticate - Blur Images - Boolean - Calculate Bearing :: Get the compass direction between two coordinates. - Calculate Distance - Calculate String Distance :: [Damerau-Levenshtein distance](https://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance) for fuzzy search, typo detection, deduping, and matching names or identifiers. - Calculate with Soulver - Choose from List (Extended) - Clamp Number - Clean Zip :: Removes .DS_Store files and __MACOSX directories from a ZIP archive. Useful when sharing ZIP files with non-Mac users. - Color - Combine Audio Files - Combine Lists - Combine Videos - Convert Coordinates to Location - Convert Date to Reference Timestamp - Convert Date to Unix Timestamp - Convert Location to Geo URI - Convert Number Base :: Convert between binary, octal, decimal, and hexadecimal. - Convert Reference Timestamp to Date - Convert Text File Encoding :: Convert text files between character encodings (UTF-8, Shift-JIS, Windows-1252, etc.) with automatic source detection. - Convert Unix Timestamp to Date - Counter :: Atomic counter. Use cases: avoid races in concurrent automations, rate-limit runs, store progress (“step-3”), track daily counts. - Create Color Image - Create Duration - Create Gradient Color Image - Create Menu Item - Create Temporary Folder :: Creates a unique temporary folder. - Create URL - Create URL Shortcut File :: Create [`.url` or `.webloc`](https://en.wikipedia.org/wiki/Shortcut_(computing)) files that open websites when double-clicked. Primarily for macOS. - Delete Empty Contacts :: Deletes contacts that have no name, phone number, email, or any other data. - Download File - Edit URL - Encode Property List :: Convert a Shortcuts dictionary or JSON file into an XML or binary property list file. - Encrypt File - Encrypt Text - Filter List - Filter List of Dictionaries - Find Music Playlist (iOS-only) - Find Wi-Fi Network (macOS-only) - Find Workout (iOS-only) :: Returns workouts from the Health app, including workout type, duration, source details, and metrics like active calories, heart rate, etc. - Find Points of Interest :: Find nearby places matching a query around a location. - Flash Screen (macOS-only) - Format Currency - Format Date Difference - Format Duration - Format Number as Ordinal - Format Number — Compact - Format Person Name - Format Text List :: `["A", "B", "C"]` → `A, B, and C` - Format URL :: Formats a URL into text with customizations of what to show. - Generate CSV - Generate Emojis - Generate Haptic Feedback (iOS-only) - Generate Random Data - Generate Random Text - Generate UUID - Get All System Colors - Get Audio Playback Destination (iOS-only) - Get Average Color - Get Average Color of Image - Get Battery State - Get Bluetooth Device - Get Bluetooth Devices - Get Boolean from Input - Get Compass Heading (iOS-only) - Get Contents of URL (Extended) :: Enhanced HTTP requests with complete response details (status codes, headers, all methods) instead of just the response body like the built-in action, and also timeout. - Get Date Added of File :: Returns the date when a file was added to its parent folder. - Get Dates in Range :: Returns all dates between two dates filtered by type. For example, get all Mondays between two dates, or list every weekend in a month. - Get Default Browser (macOS-only) - Get Default Gateway IP Address :: Returns the default gateway IP address for the current network, usually the router address on Wi-Fi or Ethernet. - Get Device Details (Extended) - Uptime (not including sleep) - Uptime (including sleep) - Active processor count - Physical memory - Time zone - Hostname - Thermal state - Total storage capacity - Available storage capacity - Battery condition (macOS-only) - Battery health (macOS-only) - Serial number (macOS-only) - Get Device Motion Activity :: (stationary, walking, running, cycling, automotive, etc.) - Get Device Motion Data (iOS-only) - Get Device Orientation - Get Dominant Colors of Image - Get Barometric Pressure (iOS-only) :: Returns the current barometric pressure from the device’s built-in barometer. - Get Elevation (iOS-only) - Get Emojis - Get/Set Extended Attribute :: Returns or sets an [extended attribute](https://en.wikipedia.org/wiki/Extended_file_attributes) for a file. - Get Extended Attribute Names :: Returns the names of the extended attributes on a file or folder. - Get File Path - Get Folder Size :: Returns the size of a folder, including files in subfolders. Use “Format File Size” to format the result. - Get High-Resolution Timestamp - Get Image URLs from Web Page :: Extracts image URLs from a web page and returns them without downloading. - Get Images from Web Page :: Extracts images from a web page and returns them as files. - Get Index of List Item - Get Map Image of Location - Get Media Metadata - Get Meta Tags of URL :: Extract meta tags (title, description, Open Graph, etc.) from a webpage. - Get Modifier Key State (macOS-only) - Get Paragraphs from Text - Get Printers (macOS-only) - Get Query Item Value from URL - Get Query Items from URL - Get Query Items from URL as Dictionary - Get Random Boolean - Get Random Color - Get Random Date and Time - Get Random Emoticon - Get Random Floating-Point Number - Get Random Number from Seed - Get Raw Media Metadata - Get Related Words - Get Running Apps (macOS-only) - Get Sentences from Text - Get SF Symbol Image - Get System Color - Get Title of URL - Get User Details - Username (macOS-only) - Full Name - Given Name - Family Name - Initials - Shell - Language Code - Idle Time (macOS-only) - Administrator Status (macOS-only) - Get Values Using [JSONPath](https://en.wikipedia.org/wiki/JSONPath) - Get/Set Default Printer (macOS-only) - Get/Set File Extension Visibility (macOS-only) :: Check and control whether file extensions are shown in Finder for specific files. Only works if the “Show all filename extensions” Finder setting is disabled. - Get/Set File Icon (macOS-only) :: Get the icon of files and folders or set custom icons for them. - Get/Set File Tags - Get/Set Image/Video Capture Date - Get/Set Image/Video Location - Get/Set Uniform Type Identifier - Global Variable - Hex Encode - Hide Shortcuts App - Invert Dictionary :: `{"en": "Hello", "es": "Hola"}` → `{"Hello": "en", "Hola": "es"}` - Invert Images - Is 24-Hour Time Format - Is Accessibility Feature On - Is Audio Playing (iOS-only) - Is Bluetooth Device Connected - Is Bluetooth On - Is Call Active (iOS-only) - Is Camera On (macOS-only) - Is Cellular Data On - Is Cellular Low Data Mode On - Is Conforming to Uniform Type Identifier - Is Connected to VPN (iOS-only) - Is Dark Mode On - Is Day - Is Device Locked - Is Device Moving - Is Device Orientation - Is Host Reachable - Is Location Services Enabled - Is Low Power Mode On - Is Microphone On (macOS-only) - Is Online - Is Screen Locked (macOS-only) - Is Screen Saver Active - Is Shaking Device - Is Silent Mode On (iOS-only) - Is Time - Is Time In Range - Is True :: Check if boolean values satisfy a logical condition: all true (AND), all false (NOR), any true (OR), any false (NAND), or exactly one true (XOR). Supports up to 10 values. - Is Web Server Reachable - Is Wi-Fi On (macOS-only) - Join Wi-Fi (iOS-only) - Keychain :: Securely stores a value in the device [keychain](https://developer.apple.com/documentation/security/keychain-services). Useful for sensitive data like API keys, tokens, and passwords. Can be synced. - Make Live Photo from Video - Make Markdown Table - Manage Shortcut Lock :: Prevents multiple instances of a shortcut from running simultaneously - Merge Dictionaries - Named Clipboard (macOS-only) - Normalize URL :: Clean up URLs by lowercasing scheme and host, removing default ports, optional query/fragment removal, text-fragment cleanup, etc. - Open URLs in Safari - Open URLs with App (macOS-only) :: For example, open URLs in a specific browser. - Overwrite File - Overlay Image (Extended) :: Overlay an image on top of another one with blend modes, opacity, rotation, flipping, and precise positioning. - Parse CSV - Parse JSON5 - Parse Markdown Table - Pick Color :: Pick a color using the system color picker, optionally from a reference image. - Ping :: Ping a host using ICMP, similar to the `ping` command-line tool, and get statistics including average/min/max round-trip time and packet loss. - Play Alert Sound (macOS-only) - Play Media with Controls :: Play media from a URL or file with in-app playback controls, and optionally wait until playback ends. - Pretty Print Dictionaries - Read/Write NFC Tag (iOS-only) :: Read the identifier and content of an NFC tag, or write text or a URL to it. - Remove Dictionary Values - Remove Duplicate Lines - Remove Duplicates from List - Remove Emojis - Remove Empty Lines - Remove from List - Remove Non-Printable Characters - Reverse Lines - Reverse List - Round Number to Decimal Places :: `3.14159` → `3.14` - Round Number to Multiple - Run cURL Command :: Execute an HTTP request from a cURL command string. Simply paste a cURL command from Postman, Swagger, or browser dev tools. Supports common options like headers, body data, authentication, redirects, and more. - Sample Color from Screen (macOS-only) - Scan Barcodes in Image - Scan Documents (iOS-only) - Scan QR Codes in Image - Send Distributed Notification (macOS-only) - [What are distributed notifications?](https://sindresorhus.com/apps/faq#distributed-notifications) - Set Capture Date of Photos :: Change the capture date of photos and videos directly in your Photos library. - Set Creation and Modification Date of File - Set Dictionary Value Using [JSONPath](https://en.wikipedia.org/wiki/JSONPath) - Set Location of Photos :: Change the location of photos and videos directly in your Photos library. - Show Black Screen (iOS-only) - Show Notification - Show Overlay :: Display large centered text on a fullscreen overlay. Supports plain text with custom colors and HTML mode for custom styling. The overlay stays until tapped or an optional duration expires. - Shuffle List - Sign JSON Web Token :: Signs a JSON payload as a JWT using HS256. - Sort List - Sort List of Dictionaries - Sort Months - Spell Out Number - Toggle Boolean - Transform Lists - Transform Text - Camel case - Pascal case - Snake case - Constant case - Dash case - Slugify - Strip punctuation - Strip quotation marks - Strip HTML - Strip diacritics - JSON Escape - Transliterate to Latin - Transliterate Latin to Arabic - Transliterate Latin to Cyrillic - Transliterate Latin to Greek - Transliterate Latin to Hebrew - Transliterate Latin to Hangul - Transliterate Latin to Hiragana - Transliterate Latin to Thai - Transliterate Hiragana to Katakana - Transliterate Mandarin to Latin - Transform Text with JavaScript - Trim Text :: Keep or drop a number of lines or characters from the start or end of text. - Trim Whitespace - Truncate List - Truncate Number - Truncate Text - Use System Font in Rich Text - [Example shortcut](https://www.icloud.com/shortcuts/03aecdb46eca496aaf996ebc625a0c54) - Wake on LAN (macOS-only) :: Wake a sleeping computer or network device by sending a [Wake on LAN](https://en.wikipedia.org/wiki/Wake-on-LAN) magic packet. - Wait for Distributed Notification (macOS-only) - [What are distributed notifications?](https://sindresorhus.com/apps/faq#distributed-notifications) - Wait Milliseconds - Write or Edit Text #### Want more shortcut actions? {#more-actions} - Run shortcuts from the menu bar or silently in the background via URL scheme → [Short Run](https://sindresorhus.com/short-run) - High-quality transcription (speech to text) in 100 languages → [Aiko](https://sindresorhus.com/aiko) - Trigger shortcuts on your Mac from your iOS device → [Hyperduck](https://sindresorhus.com/hyperduck#shortcuts) - Set default browser → [Supercharge](https://sindresorhus.com/supercharge) & [Default Browser](https://sindresorhus.com/default-browser) - Use the ChatGPT API, Ollama, Groq → [AI Actions](https://sindresorhus.com/ai-actions) - Show text in menu bar → [One Thing](https://sindresorhus.com/one-thing) - Open URLs in a specific browser → [Velja](https://sindresorhus.com/velja) - Remove tracking parameters from URLs → [Velja](https://sindresorhus.com/velja) & [Pure Paste](https://sindresorhus.com/pure-paste) - Check if online → [Online Check](https://sindresorhus.com/online-check) - Generate images from text with AI locally → [Imago](https://sindresorhus.com/imago) - Clear clipboard formatting → [Pure Paste](https://sindresorhus.com/pure-paste) - Get internet speed → [Speediness](https://sindresorhus.com/speediness) - Join video calls → [Dato](https://sindresorhus.com/dato) - Put text on the iOS Lock Screen → [Any Text](https://sindresorhus.com/any-text) - Preview app icons → [Icon Preview](https://sindresorhus.com/icon-preview) - Get clipboard items → [Pasteboard Viewer](https://sindresorhus.com/pasteboard-viewer) #### Impossible actions {#impossible-actions} Some common action requests that are not possible: - Reading what’s on the screen - Current text selection - Orientation lock status - Flashlight status - Ambient sensor info - Flight mode status - Hotspot status - Hotspot connect/disconnect - All audio playback destinations - CarPlay connection status - Notifications in CarPlay - Media volume - More accessibility checks (like reduce white point) - If charging wirelessly - Get multiple representation from an item Anything related to changing system features/settings or interacting with other apps is generally not possible. For these, I recommend sending a [feature request to Apple](https://feedbackassistant.apple.com). #### Already exists {#exists} - Is Wi-Fi On (iOS): Already possible with the built-in “Get Network Details” action. - Wi-Fi Strength: Already possible with the built-in “Get Network Details” action. #### Declined actions {#declined-actions} - Imgur: I generally don’t want to integrate with services. They cause a huge support burden, either by being unreliable, breaking the API, shutting down, and other things. ## Tips ### URL Scheme {#url-scheme} The app supports the `actions://` URL scheme that can be used to open the app. ## Frequently Asked Questions {#faq} ### The actions don’t show up in the Shortcuts app {#actions-not-showing-up} This is caused by an iOS/macOS bug. Some things you could try: 1. Restart your device. 1. Change the device language to something else and back. 1. Add [this shortcut](https://www.icloud.com/shortcuts/14315b9af3774a0c8cb439718a67fb2f), run it once, relaunch Shortcuts, and see if the actions show up in the Shortcuts app after that. 1. Add [this shortcut](https://www.icloud.com/shortcuts/e3b39e37d8d6439db9119ebbff626958), copy the action, paste it into a new shortcut, and relaunch Shortcuts. 1. Remove the app, install it again, and restart your device. *Please don’t contact me about this issue. This is a problem with iOS/macOS and out of my control.* ### I get a “errorDomain error 2” error when running an action Same solution as above. ### How can I prevent the app from being offloaded when I have “app offloading” enabled on iOS? iOS does not have a way to prevent individual apps from being offloaded (even though it should!) and there is no way for apps to tell iOS not to offload them. I recommend [sending feedback to Apple](https://feedbackassistant.apple.com) about this. You could try [this workaround](https://www.reddit.com/r/ios/comments/85k8b5/disable_offloading_for_specific_apps/). ### Can the “Show Notification” action send critical alerts? No. I applied for Apple’s [Critical Alerts entitlement](https://developer.apple.com/documentation/bundleresources/entitlements/com.apple.developer.usernotifications.critical-alerts), but it was declined. Critical Alerts are reserved for very limited use cases such as medical, health, home security, and public safety notifications. General-purpose automation apps like Actions are not eligible. ## Older Versions - [3.8.0](https://www.dropbox.com/scl/fi/fhfw330g14eh35bwofuyy/Actions-3.8.0-macOS-15-1773919013.zip?rlkey=9l9f3noc5l64j9r0cai9lc5rm&raw=1) for macOS 15+ - [3.5.1](https://github.com/user-attachments/files/18963268/Actions.3.5.1.-.macOS.14.zip) for macOS 14+ - [2.10.0](https://www.dropbox.com/scl/fi/lzy4po8qfggroxcv9pzdo/Actions-2.10.0-1731826197.zip?rlkey=f37xihlhq45syauygdn5268un&raw=1) for macOS 13+ - [1.13.1](https://www.dropbox.com/scl/fi/9iqfn8airygpk0la4gv1u/Actions-1.13.1-1731826428.zip?rlkey=y4u5ni2pn28rp3lse08lv96k6&raw=1) for macOS 12+ ## Non-App Store Version A special macOS version for users that cannot access the App Store. It won’t receive automatic updates. I will update it here once a year. [Download](https://www.dropbox.com/scl/fi/7mt9uvbmn589y4qobdpe9/Actions-4.0.1-1774194992.zip?rlkey=7tg0zlun69c19t6m5lmn2ph0q&raw=1) *(4.0.1 · macOS 26+)* --- # Pandan Time awareness in your menu bar. URL: https://sindresorhus.com/pandan Pandan shows in the menu bar how long you have been actively using your computer, so you know when it is time to take a break. It notices when you step away, and it can remind you when it is time. ## Frequently Asked Questions {#faq} ### Can you make the history be further back than 120 days? The history is intentionally limited. Pandan is about time awareness right now, not analyzing past behavior. If you need more stats and graphs, check out the system [Screen Time](https://support.apple.com/HT210387) feature. ### Can you make the app available on iOS too? This is unfortunately not possible as iOS does not let an app continuously check whether the user is idle. ### How can I play a custom sound as a notification? {#custom-notification-sound} Make a [shortcut](https://support.apple.com/guide/shortcuts-mac/intro-to-shortcuts-apdf22b0444c/mac) that uses the [`Play Sound` action](https://www.icloud.com/shortcuts/9cfae8edd2dd48f3bf318a3d825b1212) and then select that shortcut in the Pandan settings. If you have my [Dato app](https://sindresorhus.com/dato) installed (even the free trial), you could use one of the sounds it provides. Find the `Get Sound` action. [Example](https://www.icloud.com/shortcuts/2bf58f1c90134803a4765745f54794f6) ### How can I show an alert as a notification? {#alert-as-notification} Same as the above, but use the `Show Alert` action instead. You could also use the “Flash Screen” action from the [Actions app](https://github.com/sindresorhus/Actions) to momentarily flash the screen. ### How can I run multiple shortcuts as a notification? Pandan lets you run a single shortcut as a notification, but a shortcut can run other shortcuts. So make the shortcuts you want to run, make another shortcut that uses the “Run Shortcut” action to run the other shortcuts, and then select this shortcut in Pandan. ### Can you support iCloud sync? No. iCloud sync is unreliable and creates too many support issues, especially for a free app. ### How can I use this as an eye-break reminder? {#eye-break-reminder} Set Pandan to remind you to take a break. Make a shortcut in the Shortcuts app that uses the “Wait” action and set it to the wanted duration of the break. After this action, you can either add a “Play Sound” or “Show Alert” action to notify you when the break is done. Then select this shortcut in the Pandan settings. ### How can I disable Pandan while using certain apps? {#disable-for-certain-apps} You can use the Shortcuts app for this. Make a shortcut that uses the “Set Enabled State” action that Pandan provides. Shortcuts automations can only run when an app opens or quits, so use the [Shortery](https://apps.apple.com/app/id1594183810) app to run this shortcut when certain apps become active or inactive. *Note that Pandan already disables itself when you are inactive.* ### How can I show the total active duration today as a countdown? {#countdown} Get [this shortcut](https://www.icloud.com/shortcuts/fdf0cd45fedb4290bfe14d84a394b601) (requires the [Actions](https://sindresorhus.com/actions) and [One Thing](https://sindresorhus.com/one-thing) apps) and select it in the Pandan settings. The countdown will update every time Pandan shows a notification. If you want the countdown to update more often, use the [Shortery](https://apps.apple.com/app/id1594183810) app to run the shortcut at an interval. ### How can I start a new session from the command-line? Make a [shortcut](https://support.apple.com/guide/shortcuts-mac/intro-to-shortcuts-apdf22b0444c/mac) that uses the `New Session` action and [run that shortcut from the command-line](https://support.apple.com/guide/shortcuts-mac/run-shortcuts-from-the-command-line-apd455c82f02/mac). > [!TIP] > Shortcuts can be a bit slow sometimes. You can use this command to have it not wait for the shortcut to finish running: `(&>/dev/null shortcuts run ShortcutName &)` ## Scripting Pandan comes bundled with actions for the built-in Shortcuts app which you can use to automate Pandan. > [!TIP] > You can [run shortcuts from the command-line](https://support.apple.com/guide/shortcuts-mac/run-shortcuts-from-the-command-line-apd455c82f02/mac). ### Use-cases {#shortcuts-use-cases} - [Play custom notification sound](https://sindresorhus.com/pandan#custom-notification-sound) - [Use Pandan as an eye break reminder](https://sindresorhus.com/pandan#eye-break-reminder) - [Show an alert as a notification](https://sindresorhus.com/pandan#alert-as-notification) - Flash the screen as a notification by using the “Flash Screen” action from the [Actions app](https://github.com/sindresorhus/Actions) - [Show a web page as a notification](https://www.icloud.com/shortcuts/0e3914da016b446dbf2fef7aa0341567) - [Lock the screen as a notification](https://www.icloud.com/shortcuts/a3aa4ba2640d4f1b97c85f498e9dd945) - [Invert the screen for 20 seconds](https://www.icloud.com/shortcuts/0710b22b12b74ec1bad0f28b327412fd) - [Make the screen gray for 20 seconds](https://www.icloud.com/shortcuts/dbdeea0a9a8b41749fa27f15cf3eb6c2) - [Show the total active duration today as a countdown](https://sindresorhus.com/pandan#countdown) *And you can combine these too.* ## Older Versions - [1.17.0](https://www.dropbox.com/scl/fi/fcejz5u34afpe9388ivw4/Pandan-1.17.0-macOS-15-1774711134.zip?rlkey=h07yv6twf0glm3u2gjdpkq78w&raw=1) for macOS 15+ - [1.16.0](https://github.com/user-attachments/files/19008473/Pandan.1.16.0.-.macOS.14.zip) for macOS 14+ - [1.15.0](https://github.com/sindresorhus/meta/files/14230031/Pandan.1.15.0.-.macOS.13.zip) for macOS 13+ - [1.13.2](https://github.com/sindresorhus/meta/files/11072195/Pandan.1.13.2.-.macOS.12.zip) for macOS 12+ - [1.9.1](https://github.com/sindresorhus/meta/files/8003835/Pandan.1.9.1.-.macOS.11.zip) for macOS 11+ ## Non-App Store Version A special version for users that cannot access the App Store. It won’t receive automatic updates. I will update it here once a year. [Download](https://www.dropbox.com/scl/fi/z38d9ejud0mid9tlvk6ax/Pandan-1.18.0-1774710864.zip?rlkey=p73ny62ik1yif3pru812akfzm&raw=1) *(1.18.0)* *Requires macOS 26 or later* --- # System Color Picker The familiar color picker supercharged. URL: https://sindresorhus.com/system-color-picker The macOS color picker as an app, with more features. Pick a color from anywhere on the screen, and copy it as Hex, HSL, RGB, OKLCH, and more. **Features** - Palettes - Recently picked colors - Quickly copy, paste, and convert colors in Hex, HSL, RGB, Unit RGB (0-1), OKLCH, LCH, and CMYK format - Show as a normal app or in the menu bar - Pick a color or toggle the window from anywhere with a global keyboard shortcut - Make the window stay on top of all other windows - Launch it at login (when in the menu bar) - Hide menu bar icon - Shortcuts support - Import [Simple Color Palette](https://simplecolorpalette.com) and Adobe Swatch Exchange (ASE) palettes
> [!TIP] > You may also like my [Simple Color Palette](https://sindresorhus.com/simple-color-palette) app. ## Tips - Press the Space key while using the color sampler to show the RGB values. The color sampler is a system component and it can unfortunately not show other kinds of color values. - Press the Option key when copying the Hex color to invert whether to include `#`. - Press the Shift key while selecting a color using the color sampler to prevent it from disappearing after your selection. ### Keyboard shortcuts You can use the following keyboard shortcuts in the app: - Pick color: Command p - Copy as Hex: Shift Command h - Copy as HSL: Shift Command s - Copy as RGB: Shift Command r - Copy as Unit RGB: Shift Command u - Copy as OKLCH: Shift Command o - Copy as LCH: Shift Command l - Copy as CMYK: Shift Command k - Paste color: Shift Command v *(In the format Hex, HSL, RGB, Unit RGB, OKLCH, LCH, or CMYK)* - Reset opacity: Control Shift o #### Switch between picker tabs You can quickly switch between different color picker tabs: - Next tab: Control Tab - Previous tab: Shift Control Tab - Wheel: Control 1 - Sliders: Control 2 - Color Palettes: Control 3 - Image Palettes: Control 4 - Pencils: Control 5 - Extensions: Control 6-9 *(if installed)* ### Plugins The built-in color picker supports plugins: - [Skala Color](https://bjango.com/mac/skalacolor/) - [Pro Picker](https://formulae.brew.sh/cask/colorpicker-propicker) - [Material Design](https://github.com/johnyanarella/MaterialDesignColorPicker) - [Color Picker Plus](https://github.com/viktorstrate/color-picker-plus) ## Frequently Asked Questions {#faq} ### Can the color sampler show Hex values? No. The color sampler in the app is provided by macOS and only supports showing RGB values when you press the Space key. To show Hex (or other formats) directly in the sampler would require a completely custom sampler, which in turn would need extra system permissions like “Screen Recording”. For now, the fastest workflow is to pick a color with the sampler and then copy it in Hex format from the app. ### What is OKLCH color? [It’s a more human-friendly color format.](https://evilmartians.com/chronicles/oklch-in-css-why-quit-rgb-hsl) Prefer this format. ### How is OKLCH better than LCH? [OKLCH](https://evilmartians.com/chronicles/oklch-in-css-why-quit-rgb-hsl) improves upon [LCH](https://lea.verou.me/2020/04/lch-colors-in-css-what-why-and-how/) by providing more accurate and consistent colors, particularly in very bright or very saturated areas. ### What is Unit RGB? It represents RGB values in the range 0-1 instead of 0-255. This format is commonly used for programming (SwiftUI, AppKit, UIKit, etc.) and other graphics programming contexts. For example, `0.5, 0.5, 0.5` in [Unit RGB](https://rgbcolorpicker.com/0-1) is equivalent to `rgb(128, 128, 128)` in standard RGB. It accepts values in the format `0.1, 0.1, 0.1` and `0.1 0.1 0.1`, including with opacity `0.1, 0.1, 0.1, 0.5`. ### Can you support HSB? You can copy a color as HSB by clicking the `(…)` button in the window and selecting “Copy as HSB”. You can also see live HSB values in the “Sliders” tab by selecting “HSB Sliders”. HSB is intentionally not one of the main formats. HSB has no CSS syntax, while all the main formats can be pasted directly into CSS. HSL is also easier to reason about: lightness goes from black (0%) through the pure color (50%) to white (100%), so making a tint or shade means changing a single value. In HSB, making a color lighter requires both increasing brightness and decreasing saturation. If you want perceptual control, prefer OKLCH. ### The color changes if I copy and then paste it That is because the default color space in the picker is [Display P3](https://en.wikipedia.org/wiki/DCI-P3), which is [part of CSS Color 4](https://drafts.csswg.org/css-color-4/#valdef-color-display-p3), but the color space used for the legacy CSS color formats is [sRGB](https://en.wikipedia.org/wiki/SRGB) (browsers are starting to [handle color spaces](https://css-tricks.com/the-expanding-gamut-of-color-on-the-web/) but they are not all there yet). ### How do I clear the list of recently picked colors? In the main app window, click the clock icon in the middle toolbar. ### How do I use palettes? You can manage palettes by selecting the third tab in the window toolbar. The fastest way to add a color to a palette is to paste a Hex color value into the app and then click the `+` button in the palette. You can also drag and drop a color into the palette from anywhere. Palettes can be accessed both from the app and the menu bar icon (if enabled). You can even access them in other apps that use the system color picker. You can find palettes on [Coolors](https://coolors.co/palettes/trending). Download the ASE palette type, right-click the file, and select “Open In › Color Picker”. ### How can I remove a color in a palette or swatch? Select the color and press the Delete key or drag and drop the color onto the trash icon in the Dock. ### How can I remove all the swatch colors at once? Unfortunately, this is not possible as swatches are managed by macOS. You will need to delete them individually. ### How can I change the color space? Right-click the color wheel. You want to select “Display P3” if you use LCH or “sRGB” if you use Hex, HSL, or RGB. Note that the HSL and RGB formats will always be clamped to [sRGB](https://en.wikipedia.org/wiki/SRGB) color space. ### Can you support `SwiftUI.Color` / `UIColor` / `NSColor` formats? The best practice is to use [Asset Catalog for colors](https://devblog.xero.com/managing-ui-colours-with-ios-11-asset-catalogs-16500ba48205) instead of hard-coding the values in code. If you really want to hard-code colors, the [Skala color picker plugin](https://bjango.com/mac/skalacolor/) supports `UIColor` and `NSColor`. ### Why does the OKLCH chroma value differ from other sources? The app displays the OKLCH chroma value as a percentage instead of an absolute value for better user-friendliness. For example, `oklch(70% 25% 135)` in the app corresponds to `oklch(70% 0.1 135)` on [oklch.com](https://oklch.com). Both are correct: the percentage form (0-100%) and the decimal form (0-0.4) are standard ways to express [OKLCH chroma](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/oklch#c). ### How can I export color palettes? **[Simple Color Palette](https://simplecolorpalette.com) format** 1. Click the `(…)` button in the window and select “Export Palettes” **CLR format** 1. Open Finder 1. Press Command+Shift+G 1. Enter `~/Library/Colors` 1. Copy the desired palette files ### How can I export swatches? 1. Go to the color palettes folder (see above) 1. Copy `NSColorPanelSwatches.plist` This file is not viewable or editable. It can only be used for backup or transfer between Macs. ## Scripting ### URL scheme The app supports the `system-color-picker:` URL scheme for programmatic control: - `system-color-picker:pick` - Start the color sampler (eyedropper) - `system-color-picker:toggle` - Toggle the color picker window Example: ```sh open --background 'system-color-picker:pick' ``` This can be used to create custom keyboard shortcuts in tools like [Raycast](https://raycast.com) and [Alfred](https://alfredapp.com). ### Shortcuts You can use the “Sample Color from Screen” action for Shortcuts to sample color from the screen and then do something with it. > [!TIP] > You can [run shortcuts from the command-line](https://support.apple.com/guide/shortcuts-mac/run-shortcuts-from-the-command-line-apd455c82f02/mac). ## Older Versions - [2.1.4](https://github.com/sindresorhus/System-Color-Picker/releases/download/older-releases/Color.Picker.2.1.4.-.macOS.15.zip) for macOS 15+ - [2.0.3](https://github.com/sindresorhus/System-Color-Picker/releases/download/older-releases/Color.Picker.2.0.3.-.macOS.14.zip) for macOS 14+ - [1.15.0](https://github.com/sindresorhus/System-Color-Picker/releases/download/older-releases/Color.Picker.1.15.0.-.macOS.13.zip) for macOS 13+ - [1.12.1](https://github.com/sindresorhus/System-Color-Picker/releases/download/older-releases/Color.Picker.1.12.1.-.macOS.12.zip) for macOS 12+ - [1.9.6](https://github.com/sindresorhus/System-Color-Picker/releases/download/older-releases/Color.Picker.1.9.6.-.macOS.11.zip) for macOS 11+ ## Non-App Store Version A special macOS version for users that cannot access the App Store. It won’t receive automatic updates. I will update it here once a year. [Download](https://www.dropbox.com/scl/fi/kk4c8p47uj791k5t0nj0n/Color-Picker-2.2.0-1767305140.zip?rlkey=jivahp9p4k5f24q76473zrnkd&raw=1) *(2.2.0 · macOS 26+)* --- # UTC Time Show the time in UTC in the menu bar or a widget. URL: https://sindresorhus.com/utc-time See the time in UTC at a glance, in your menu bar or a widget. Useful when you work with servers, logs, or people in many time zones. ## Frequently Asked Questions {#faq} ### The time looks blurry or is not dimmed on my secondary display [See this answer](https://sindresorhus.com/apps/faq#menu-bar-secondary-display) ### Can you localize the app into my language? The date & time output adheres to your locale settings. I don’t plan to localize the app itself. ### The app does not show up in the menu bar When the menu bar grows too large, macOS hides overflowing items, so UTC Time might have been hidden. Try to close some of your other menu bar apps. There’s, unfortunately, no way for apps to detect this and warn the user. [More tips](https://sindresorhus.com/apps/faq#app-not-showing-in-menu-bar) ### Can you add an analog clock? I have no plans to add that. ### Can you add support for other time zones? That is outside the scope of this app, but check out my [Second Clock](https://sindresorhus.com/second-clock) or [Dato](https://sindresorhus.com/dato) app, which do support this. ### How can I customize the menu bar date and time format? Same answer as above. ### Can it show seconds in the clock? I don’t plan to add this. Showing seconds wastes a lot of system resources and energy as macOS is very inefficient at rendering updates in the menu bar. Instead, just enable seconds in the system clock. ## Older Versions - [1.10.0](https://www.dropbox.com/scl/fi/oj2tobls8f2dtotzo5u0j/UTC-Time-1.10.0-macOS-15-1769181410.zip?rlkey=3snz635x894dx95ngar8tns6p&raw=1) for macOS 15+ - [1.9.1](https://github.com/user-attachments/files/18215312/UTC.Time.1.9.1.-.macOS.14.zip) for macOS 14+ - [1.7.1](https://github.com/sindresorhus/meta/files/13973570/UTC.Time.1.7.1.-.macOS.13.zip) for macOS 13+ - [1.5.1](https://github.com/sindresorhus/meta/files/10767291/UTC.Time.1.5.1.-.macOS.12.zip) for macOS 12+ - [1.3.0](https://github.com/sindresorhus/meta/files/8007477/UTC.Time.1.3.0.-.macOS.11.zip) for macOS 11+ ## Non-App Store Version A special version for users that cannot access the App Store. It won’t receive automatic updates. I will update it here once a year. [Download](https://www.dropbox.com/scl/fi/t98b3p4kebmb7hrmahms4/UTC-Time-1.11.0-1769179922.zip?rlkey=2i3xk1wm2okqh1237rfkbuj3t&raw=1) *(1.11.0)* *Requires macOS 26 or later* --- # Photo Widget Photos on your Home Screen and desktop. URL: https://sindresorhus.com/photo-widget See your favorite photos every time you look at your Home Screen or desktop. Make a widget with a single photo, a slideshow, or the photos in an album. For macOS, it’s only available for Apple silicon Macs. ## Frequently Asked Questions {#faq} ### The widget does not show up in the widget picker, the widget is stuck, or is missing from the Home Screen The iOS widget system is quite buggy and can fail a lot. This is not a problem with the app and out of my control. See [how to fix a widget that does not show up](https://sindresorhus.com/apps/faq#widget-not-showing). ### I’m not seeing the new widget settings for showing date and album title Try adding a new widget. Sometimes existing widgets get stuck and don’t receive new settings. This is an iOS bug and out of my control. ### Some widget settings are missing Same as the above. ### How do I add a widget to the Home Screen? When on the Home Screen, long-press on the background (not on any icons), press the top-left “+” button, and select “Photo Widget”. [Learn more.](https://support.apple.com/en-us/HT207122) ### How do I edit a widget? When on the Home Screen, long-press on the widget, and select “Edit Widget”. [Learn more.](https://support.apple.com/en-us/HT207122) ### Why is there no Lock Screen widget? Lock Screen widgets are monochrome-only and too small to properly display photos. ### Why can I only add 100 photos to the app? This is because of a technical limitation in the iOS widget system. Hopefully, it can be increased in the future. It should be enough for most users though. If you use the “Album” widget, there’s no limit to the number of photos. ### How can I hide the name of the app shown below the widget? This is not possible. App developers have no way to hide it. However, in iOS 18 you can hide the title for all apps and widgets. ### If I select an album in a widget, does it include new photos added to the album after I set it up? Yes. The widget fetches a list of all the photos in the album each time and picks a random one. ### Can I show an animated GIF in a widget? This is not possible. ### Why does my widget update more often than the interval I set or not as often? The interval is a suggestion to iOS, not a strict rule. iOS manages widget updates independently to optimize performance and battery life. It may refresh widgets more or less frequently based on various factors. Apps cannot control this behavior. ### How is this different from the built-in “Photos” widget? The built-in widget only shows photos from “Memories” and “Featured Photos” in your photo library. There is no way to customize it or pick the photos to be shown. ### Can you make the cropping prioritize faces? This is something I want to add, but it’s more complicated than it sounds. Widgets have limited resources, and currently, it’s not enough to do face detection. Apple works around that by having the face data already available, but this data is not available to third-party apps. Other photo widget apps solve this by letting the user pick the album in the app itself and then they do the face detection in the app upfront, however, that would require a rewrite of this app, which is not something I have time to do right now. ### When using the “Run Shortcut” action, why does tapping the widget first open the main app and then the Shortcuts app? This is because of iOS limitations. A widget can only open its own app when a user taps it. And the only way to run a shortcut is to open the Shortcuts app using a special URL. So when you tap the widget, the widget opens the main app, and the main app then opens the Shortcuts app. It’s not a very good user experience, but only Apple can fix this. If you work at Apple, you know what to do: - [FB9745173](https://github.com/feedback-assistant/reports/issues/240) - [FB11516334](https://github.com/feedback-assistant/reports/issues/357) - [FB11516273](https://github.com/feedback-assistant/reports/issues/356) ### Why are the images in the widget not full quality? Widgets get very few system resources so it’s not possible to load a high-resolution image. If you work at Apple, you know what to do: - [FB8832751](https://github.com/feedback-assistant/reports/issues/177) ### How can I select a people album? Apple does not let third-party apps access these albums. --- # Shareful Give the macOS share menu superpowers. URL: https://sindresorhus.com/shareful Shareful makes the system share menu even more useful by providing some commonly needed share services like copy and save. ## Frequently Asked Questions {#faq} ### The share services do not show up in System Settings Shareful provides share services (Copy, Open In, etc.) which macOS is supposed to pick up. Shareful has no control over how it works. In some rare cases, macOS can fail to pick up these share services. This is a problem with macOS not Shareful. Here are some things you could try: - Restart your computer - Reinstall the app - [Reset NVRAM](https://support.apple.com/en-us/HT204063) - [Reset the share services registry](https://web.archive.org/web/20180711015728/https://support.apple.com/en-us/HT203129) If you are on a work computer, it could also be that your company has blocked third-party share services. ### Can you add a “Move” or “Delete” action? This is unfortunately not possible. [Share extensions](https://support.apple.com/guide/mac-help/use-the-share-menu-on-mac-mh40614/mac) (for example, the “Copy” action), usually only receive a copy of the file. They have no guaranteed access to the original file. ### Can you add a “Copy Path” action for use in Finder? That would be moot. Right-click a file in Finder, press the Option key, and select “Copy as Pathname”. ### Can you add items that run specific Shortcuts in the Share menu? {#shortcuts} No. This is not possible. You could use my [Short Run](https://sindresorhus.com/short-run) app instead. It can show a curated list of shortcuts in the menu bar, automatically showing some based on which app is currently active. Although, it won’t be able to receive what the share items receive. ## Older Versions - [1.11.0](https://www.dropbox.com/scl/fi/a7yel1xtzfi3yhh3eynbp/Shareful-1.11.0-macOS-15-1777049166.zip?rlkey=chl7ohj7zoya7c5ymnpd0dnoc&raw=1) for macOS 15+ - [1.10.4](https://github.com/user-attachments/files/18914470/Shareful.1.10.4.-.macOS.14.zip) for macOS 14+ - [1.9.1](https://github.com/sindresorhus/meta/files/14158056/Shareful.1.9.1.-.macOS.13.zip) for macOS 13+ - [1.8.0](https://github.com/sindresorhus/meta/files/11297902/Shareful.1.8.0.-.macOS.12.zip) for macOS 12+ - [1.6.0](https://github.com/sindresorhus/meta/files/8800088/Shareful.1.6.0.-.macOS.11.zip) for macOS 11+ - [1.4.0](https://github.com/sindresorhus/meta/files/7119520/Shareful.1.4.0.-.macOS.10.15.zip) for macOS 10.15+ ## Non-App Store Version A special version for users that cannot access the App Store. It won’t receive automatic updates. I will update it here once a year. [Download](https://www.dropbox.com/scl/fi/aq893jnt65u57xr70yjoo/Shareful-1.12.0-1777048683.zip?rlkey=ikakp6yyejrgjigc9cd9ki4zd&raw=1) *(1.12.0)* *Requires macOS 26 or later* --- # Recordia Quickly record audio. URL: https://sindresorhus.com/recordia Press a keyboard shortcut or click the menu bar icon, and you are recording. Recordia records the microphone, the audio playing on your Mac, or both at once. ## Frequently Asked Questions {#faq} ### How can I preview the recording when done? First, ensure the “Show recording in Finder after saving” setting is enabled. When the recording is shown in Finder, press the Space key to preview it. ### How can I trim the recording when done? Preview the recording as described above and then click the trim button. ### How can I record system audio? {#record-system-audio} In the Recordia menu, under “Audio Source”, choose “System Audio” to capture all audio playing on your Mac, or “Microphone + System Audio” to record both into a single file. Recording system audio requires macOS 26 or later. On older versions, you can [install the BlackHole audio driver](https://github.com/ExistentialAudio/BlackHole#installation-instructions), [set up a multi-output device](https://github.com/ExistentialAudio/BlackHole/wiki/Multi-Output-Device), and then select “BlackHole” as the input device in Recordia. ### How can I transcribe the audio (speech to text)? {#transcribe} Recordia does not support transcription, but check out my [Aiko app](https://sindresorhus.com/aiko). You can easily share a recording to Aiko after you finish recording. ### How can I sync recordings to iCloud? Choose “iCloud Drive” as the output directory. ### Why 48 kHz and not 44.1 kHz? 48 kHz is the standard for audio in today’s video production. It’s also the internal production standard for many audio production companies. 44.1 kHz was popularized by music CDs. ### Why WAV over ALAC/FLAC? WAV is supported everywhere. ### Does it do noise reduction? macOS does some noise reduction by default. For stronger noise reduction, check out [this free app](https://www.utterly.app). ### Can I use my iPhone as a microphone? Yes, follow the guide [here](https://www.switchingtomac.com/tutorials/how-to-use-your-iphone-as-a-microphone-on-a-mac/). ## Older Versions - [2.10.0](https://www.dropbox.com/scl/fi/xnrlepmmosvk4282red8t/Recordia-2.10.0-macOS-15-1769967108.zip?rlkey=l7t9fmf4ixcfy2pfotg6zrjbg&raw=1) for macOS 15+ - [2.9.0](https://github.com/user-attachments/files/18787741/Recordia.2.9.0.-.macOS.14.zip) for macOS 14+ - [2.7.0](https://github.com/sindresorhus/meta/files/13975939/Recordia.2.7.0.-.macOS.13.zip) for macOS 13+ - [2.6.1](https://github.com/sindresorhus/meta/files/11053013/Recordia.2.6.1.-.macOS.12.zip) for macOS 12+ - [2.3.0](https://github.com/sindresorhus/meta/files/8798113/Recordia.2.3.0.-.macOS.11.zip) for macOS 11+ - [1.5.1](https://github.com/sindresorhus/meta/files/6538283/Recordia.1.5.1.-.macOS.10.15.zip) for macOS 10.15+ ## Non-App Store Version A special version for users that cannot access the App Store. It won’t receive automatic updates. I will update it here once a year. [Download](https://www.dropbox.com/scl/fi/4pzfvx3ixiybchnlka327/Recordia-2.11.0-1769966188.zip?rlkey=27gzy58hhao7ih3jrysp3v68w&raw=1) *(2.11.0)* *Requires macOS 26 or later* --- # Pasteboard Viewer Inspect the system pasteboards. URL: https://sindresorhus.com/pasteboard-viewer A developer utility that shows the contents of the system pasteboards live, with previews of text, RTF, images, and anything that has a Quick Look preview. Useful to check that your app puts the correct data on the pasteboard. Note that this is not a clipboard manager. --- # Plash Make any website your desktop wallpaper. URL: https://sindresorhus.com/plash Show your calendar, a dashboard, the Bing photo of the day, or an animated GIF as your desktop wallpaper. Add several websites, switch between them, and turn on Browsing Mode when you want to click around in the page. #### Use-cases - [**Bing Photo of the Day**](https://github.com/sindresorhus/plash-bing-photo-of-the-day) - **Calendar**\ For example, Google Calendar or Outlook 365. - **Personal stats**\ You could even make a custom website for this. - [**Random street view image**](https://randomstreetview.com/#slideshow) - **Animated GIF**\ For example, [an animated GIF from Giphy](https://media3.giphy.com/media/xTiTnLmaxrlBHxsMMg/giphy.gif?cid=790b761121c10e72aca8bcfe50b030502b62a69ac7336782&rid=giphy.gif). - [**Random color**](https://www.color.pizza) - **Build a custom website**\ You could build something quick and host it on [GitHub Pages](https://pages.github.com), [jsfiddle](https://jsfiddle.net), or [CodePen](https://codepen.io). [*Share your use-case*](https://github.com/sindresorhus/Plash/discussions/136) **Features** - Show a remote or local website - Interact with the website (“Browsing Mode”) - Automatically reload the website at a custom interval - Add multiple websites - Show the website on a different display - Invert website colors (fake dark mode) - Add custom CSS and JavaScript to the website - Lower the opacity - [Transparent background](https://github.com/sindresorhus/Plash/issues/1#issuecomment-573513816) - Automatically deactivate while on battery - Audio is muted - Single image will be aspect-filled to your screen - Hide menu bar icon - Shortcuts support - [Scriptable](https://sindresorhus.com/plash#scripting) - [Share extension](https://sindresorhus.com/plash#share-extension) ## Tips ### Browsing mode You can interact with the website by enabling “Browsing Mode”. When in this mode, you can right-click to be able to go back/forward, reload, and zoom in the page contents (the zoom level is saved). You can also pinch to magnify. This is different from zooming the page contents in that it will zoom in to a specific part of the page instead of just enlarging everything. Plash injects a CSS class named `plash-is-browsing-mode` on the `` element while browsing mode is active. You could use this class to customize the website for browsing mode. If clicking a link opens it in a new window, you can hold the Option key while clicking the link to open it in the main Plash window. ### Zoom in website To zoom in the website, activate “Browsing Mode”, right-click the website, and then select “Zoom In”. ### URL placeholders for screen width and height Use `[[screenWidth]]` and `[[screenHeight]]` in any URL and Plash will substitute the right values for you. For example, `https://source.unsplash.com/random/[[screenWidth]]x[[screenHeight]]?puppy`. ### Scroll to position You can scroll a website to a specific position each time it is loaded by putting the following in the website’s “JavaScript” field. Adjust the “500” to how far down it should scroll. ```js window.scrollTo(0, 500); ``` You can also [scroll to a specific element](https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollIntoView) matching a [CSS selector](https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Selectors): ```js document.querySelector('.title')?.scrollIntoView(); ``` ### Make the website occupy only half the screen You can use the “CSS” field in the website settings to adjust the padding of the website: ```css :root { margin-left: 50% !important; } ``` ### Detect Plash Plash injects a CSS class named `is-plash-app` on the `` element. You could use this class to customize your website for Plash. For example, if your website has instructions on how to use it in Plash, you could hide those when it’s running in Plash. ### Share extension Plash comes bundled with a [share extension](https://support.apple.com/guide/mac-help/use-the-share-menu-on-mac-mh40614/mac). You can, for example, use it to quickly add a website you have open in Safari to Plash. ## Frequently Asked Questions {#faq} ### Can it automatically switch websites every 10 minutes? Plash can be automated with the built-in Shortcuts app, for example, using the “Switch to Next Website” action. Shortcuts automations cannot run at an interval, so use the [Shortery](https://apps.apple.com/app/id1594183810) app to run the shortcut every 10 minutes. ### Does it support multiple displays? Support for multiple displays is currently limited to the ability to choose which display to show the website on. Support for setting a separate website for each display is [planned](https://github.com/sindresorhus/Plash/issues/2). However, there is a [workaround](https://github.com/sindresorhus/Plash/issues/2#issuecomment-653891524). ### Can Plash display multiple websites at the same time? No. Plash only shows one website at a time. Displaying multiple websites simultaneously is out of scope. ### Why does Plash use so much memory? Plash uses very little memory. Usually around 40 MB. However, the websites you display can take up a lot of memory, and sometimes even have memory leaks. ### The menu bar does not adapt to the Plash wallpaper The menu bar adapts its color from the actual system wallpaper. Plash is not actually a wallpaper, but rather runs right above the wallpaper. So Plash cannot influence the menu bar color. ### Can Plash block ads? Not built-in, but you can block ads system-wide with a [DNS ad-blocker](https://alternate-dns.com). ### How can I switch to a specific website with a keyboard shortcut? Make a shortcut in the Shortcuts app that uses the “Set Current Website” action and then set a keyboard shortcut for the shortcut. ### Can it also show on the Lock Screen? No. This is not possible. ### What does “Plash” mean? “a sound produced by liquid striking something or being struck” ## Scripting You can control Plash using anything that supports opening a URL with a custom scheme. For example, to reload the current website, run this terminal command: ```console open -g plash:reload ``` ### Tools - [plash-cli](https://github.com/sindresorhus/plash-cli): Command-line tool. - [alfred-plash](https://github.com/sindresorhus/alfred-plash): Alfred workflow. - [Raycast commands](https://github.com/raycast/script-commands/tree/master/commands#plash) ### Commands #### `add` Add a website to Plash. You can optionally specify a title. If no title is given, a title will be automatically fetched from the website. ```console open -g 'plash:add?url=https://sindresorhus.com/plash&title=Plash%20website' ``` *Don’t forget to correctly encode query parameters.* > [!NOTE] > Local file URLs are not supported. #### `reload` Reload the current website. ```console open -g plash:reload ``` #### `next` Switch to the next website in the list. ```console open -g plash:next ``` #### `previous` Switch to the previous website in the list. ```console open -g plash:previous ``` #### `random` Switch to a random website in the list. It will never show the same website twice in a row, unless you only have a single website. ```console open -g plash:random ``` #### `toggle-browsing-mode` Toggle browsing mode. ```console open -g plash:toggle-browsing-mode ``` ### Examples #### Node.js ```js import {execFileSync} from 'node:child_process'; execFileSync('open', ['--background', 'plash:reload']); ``` #### Swift ```swift import Cocoa let command = "plash:reload" let configuration = NSWorkspace.OpenConfiguration() configuration.activates = false NSWorkspace.shared.open(URL(string: command)!, configuration: configuration) ``` #### AppleScript ```applescript do shell script "open --background 'plash:reload'" ``` #### Python ```python import subprocess subprocess.run(['open', '--background', 'plash:reload']) ``` ## Older Versions - [2.16.0](https://github.com/sindresorhus/Plash/releases/download/older-releases/Plash.2.16.0.-.macOS.15.zip) for macOS 15+ - [2.15.0](https://github.com/sindresorhus/Plash/releases/download/older-releases/Plash.2.15.0.-.macOS.14.zip) for macOS 14+ - [2.14.1](https://github.com/sindresorhus/Plash/releases/download/older-releases/Plash.2.14.1.-.macOS.13.zip) for macOS 13+ - [2.12.1](https://github.com/sindresorhus/Plash/releases/download/older-releases/Plash.2.12.1.-.macOS.12.zip) for macOS 12+ - [2.10.1](https://github.com/sindresorhus/Plash/releases/download/older-releases/Plash.2.10.1.-.macOS.11.zip) for macOS 11+ - [2.1.1](https://github.com/sindresorhus/Plash/releases/download/older-releases/Plash.2.1.1.-.macOS.10.15.zip) for macOS 10.15+ ## Non-App Store Version A special version for users that cannot access the App Store. It won’t receive automatic updates. I will update it here once a year. [Download](https://www.dropbox.com/scl/fi/fye9v3csnxpgk7o81vacq/Plash-2.17.2-1777967935.zip?rlkey=14wtfv7vew49om93lcss5qtac&raw=1) *(2.17.2)* *Requires macOS 26 or later* --- # Dato Menu bar calendar and world clocks, plus fullscreen meeting notifications. URL: https://sindresorhus.com/dato See the date, the time, and your world clocks in the menu bar. Click Dato to see a calendar, your upcoming events, and the time in other time zones. When a meeting starts, Dato can show a fullscreen notification, so it’s hard to miss. Dato is a one-time purchase on the App Store with a lifetime of updates. [MacStories review of Dato.](https://www.macstories.net/reviews/dato-review-calendar-events-and-time-zones-from-your-macs-menu-bar/) @Feature(title: "Your week in the menu bar") { Click Dato to see a calendar and your events for the next week. It uses the calendars you already have in the Calendar app, like iCloud, Google, and Outlook, and it can show your reminders too. Create an event from anywhere with a global keyboard shortcut. } @Feature(title: "Know the time everywhere") { Add a time zone by searching for a city. 15K cities are included, so it works offline. See the time zones in the Dato menu, or as clocks in the menu bar. Drag the time travel slider to see what time it will be in each place, for example before you plan a call. } @Feature(title: "Notice when a meeting starts") { A small notification is easy to miss. When a meeting starts, Dato can show a fullscreen notification instead, for the calendars you choose. Join the next video call with a global keyboard shortcut. Dato knows the links from Zoom, Google Meet, Microsoft Teams, and [50+ other services](https://sindresorhus.com/dato#supported-video-call-services). } **Features** - Calendar, optionally with week numbers and event & reminder indicators. - Your upcoming events for the next week (customizable) at a glance. - Reminders support. - Time zones in the Dato menu, optionally with custom names. - Show the upcoming event in the menu bar (like Fantastical, Meeter, and MeetingBar) - Deduplicates identical events from different calendars - Create events (even with a global keyboard shortcut) - Join the next video call meeting with a customizable global keyboard shortcut - Custom format for the date & time in the menu bar. - Highlight certain days of the week in the calendar. - Fully customizable. - Lots of in-app keyboard shortcuts for power users. - Global keyboard shortcut to open/close the app. - Supports calendar events with HTML formatted notes. - Show seconds in the menu bar clock or in the menu. (Optional) - Integration with Zoom, Google Meet, Microsoft Teams, and 50+ other services. - And the ability to add support for any other video call service yourself. - Open calendar events from Google Calendar directly in Google Calendar on the web. - Comes with multiple menu bar icons to choose from: date in calendar, date with border (like Itsycal), static clock, none. - Large text mode. - Date calculator. - Hourly chime. ### Supported video call services {#supported-video-call-services} - 8x8 - Amazon Chime - Around - BlueJeans - Cal.com - Chorus - CoScreen - Demio - Demodesk - Dialpad - Doxy.me - FaceTime - Gather - Gong - Google Meet - GoToMeeting - GoToWebinar - Huddle01 - Jam - Jitsi Meet - Lark - LiveKit Meet - Livestorm - Luma - Meetecho - Microsoft Teams - oVice - Pop - Preply - Pumble - Reclaim - Relayed - RingCentral - Session - Signal - Slack - StreamYard - TeamViewer - Teemyco - Tuple - UserZoom - Venue - Vimeo - Vonage - VooV - Vowel - Webex - Whereby - Zhumu - Zoho Cliq - Zoom *And you can add support for any other video call service yourself in the app.* --- If all you need is another clock in the menu bar, check out [Second Clock](https://sindresorhus.com/second-clock). --- ## Trial @Trial(url: "https://www.dropbox.com/scl/fi/3x6zkdw520rornu7j1zmh/Dato-5.8.3-trial-1789044413.zip?rlkey=vwxob5o3k9eg8gl8bxyshrl1c&raw=1") { The trial is fully functional. The only limitation is a reminder to buy the app every 12 hours, and no automatic updates. All data and settings carry over if you buy it on the App Store. } *Requires macOS 26 and later* *Download it to the Downloads folder, double-click to unzip, and then move it to the `/Applications` folder.* You can also [try it on Setapp](https://go.setapp.com/stp181?refAppID=571&utm_medium=vendor_program&utm_content=button) for 7 days for free. ## Tips
Double-click an event in the event list to open it in the default calendar app, if possible.
Click the month & year label in the calendar (for example, “April 2020”) to change the selected day to “today”. Right-click it to quickly go to a specific date.
Long-press a day in the calendar to open that day in the default calendar app. (Supports: Calendar, Fantastical 2, BusyCal, Outlook)
Hold option while clicking the calendar arrows to jump a year instead of a month.
Hold option while dragging the time travel slider to skip by 15 minutes instead of an hour.
If you open the “new event” window while the time travel slider is active, the event will default to the time of the slider.
Double-click a time zone to collapse all time zones into a compact summary row. Click the row to expand. You can scroll sideways if there are many time zones. You can also collapse from the right-click menu on a time zone.
### Keyboard Shortcuts #### General
◀/▶ Previous/next day in the calendar
▲/▼ Same day in the previous/next week in the calendar
option+◀
option+▶
Previous/next month in the calendar
shift+option+◀
shift+option+▶
Previous/next year in the calendar
space Select today in the calendar
n Create a new event
p Toggle window pinning
c Show the date & time calculator
j Join the current/upcoming Zoom/Meet/Teams meeting (works in the Dato menu and the “upcoming event in menu bar” menu)
o Open the default calendar app
shift+command+r Toggle showing reminders in the event list
command+q Quit the app
#### Fullscreen notifications
esc Dismiss notification
return Run the default action (highlighted button)
#### Time travel
command+◀
command+▶
Activate time travel and offset it by one step backwards or forwards
esc / space Deactivate time travel
#### New event & reminder window
control+tab Switch between new event and new reminder
command+1 … command+9 Select calendar/list by position
command+▲
command+▼
Cycle through calendars/lists
command+d Toggle “Date” reminder mode
command+t Toggle “Time” reminder mode
### Gestures
Double-click an event in the event list Open the event in the default calendar app, if possible
Swipe left/right on the calendar Next/previous month in the calendar
option + Swipe left/right on the calendar Next/previous year in the calendar
shift + Swipe left/right on the calendar Next/previous day in the calendar
Double-click a time zone Collapse time zones into a compact view
## Frequently Asked Questions {#faq} ### Dato does not work with Ice This is an [issue with Ice](https://github.com/jordanbaird/Ice/discussions/298) and must be fixed there. ### I have multiple menu bar items that open Dato Dato can potentially have multiple menu bar items: - The main one - Upcoming event - Time zone in the menu bar You can choose which one of these to show in the menu bar in the app settings. ### Can I buy Dato from outside the App Store and Setapp? No. Dato is only available from the App Store and Setapp. ### Dato quit suddenly Check if there are any [crash reports](https://sindresorhus.com/apps/faq#crash-report). If none exists, it’s likely macOS terminated Dato because it needed to reclaim memory. This is an especially common problem on MacBook Air laptops with only 8 GB RAM. Try restarting your computer. ### Some calendars are missing {#missing-calendars} Dato simply fetches calendars and events from macOS. If something is missing, it’s never caused by Dato. Make sure: - The calendars show in the Calendar app and that they are enabled there. - Open the Calendar app settings, click the “Accounts” pane, and then check that the calendars are there. Dato can only show calendars added there. - The calendars are enabled in the Dato settings. - Open the Dato settings, click the “Events” tab, and make sure the calendars are enabled. - **Note:** Please double-check this. They may have been unchecked by macOS changes. - [The calendar events may not yet have been fetched by macOS](https://sindresorhus.com/dato#refresh-interval) - You have tried restarting your computer. - You are on the latest version of macOS. - You have tried resetting permissions for Dato using [App Buddy](https://sindresorhus.com/app-buddy). Some users had luck with removing the account from the Calendar app settings and re-adding it. [Contact me](https://sindresorhus.com/feedback?product=Dato&referrer=Website-FAQ) if you have tried all this and you are still having issues. I’m not aware of any issue that was not one of the things mentioned above. ### Some calendar events are missing in Dato {#missing-events} Make sure: - The calendar with the event is enabled in Dato. - You are on the latest Dato and macOS versions. - You have tried restarting your computer. - The event is not a declined event, which Dato does not show. - You have not hidden the event using the “Hide” action in the event’s context menu. - You have not excluded the event with the “Exclude events” setting. - The event shows up in the Calendar app. - If it does not show up there, the problem is not with Dato. - Try pressing Command+R in the Calendar app to force-refresh. - Try signing out and in again of the account in the Calendar app settings. That has helped a few users. - [Microsoft Bookings has problems syncing to MacBooks.](https://answers.microsoft.com/en-us/outlook_com/forum/all/bookings-meetings-sync-with-iphone-but-not-with/085530b3-90d2-4792-b0d9-0cc6f52875ba?page=3) ### The “upcoming event in menu bar” notification is not showing up {#upcoming-event-in-menu-bar-troubleshooting} Make sure: - The feature is enabled in the settings. - The correct calendars for it are enabled (it has a separate calendar picker). - When in the settings for it, the placeholder example menu bar item shows up in the menu bar. - If it doesn’t show up, try reducing the “event title limit”. - There is enough space in the menu bar to show it. - You are on the latest Dato and macOS versions. - You have tried restarting your computer. - If you have Bartender or Ice (or a similar app that hides menu bar items) installed, make sure the menu bar item was not auto-hidden by them. - Note that it uses a separate menu item from the main Dato menu item, so it could still be hidden by Bartender/Ice while the main menu bar item is not. - Try quitting Bartender/Ice to make sure it is not the one causing the issue. - If you are using Ice, see [this](https://github.com/jordanbaird/Ice/discussions/298). - As a workaround, in the “upcoming event in menu bar” settings, you could choose to keep the menu bar item visible even when there are no upcoming events. - The event is not an all-day event (which are not shown). - You have not muted the event. - You have not excluded the event with the “Exclude events” setting. - If you have “Show for video call events only” enabled, ensure the event shows a video call icon in the event list. - If you have “Show for events with an alert only” enabled, ensure the event has an alert. - If you have “Show only for accepted events” enabled, ensure the event is accepted. ### Fullscreen notifications do not work {#fullscreen-notifications-troubleshooting} Make sure: - The fullscreen notifications setting is enabled. - You have selected the correct calendars in the fullscreen notifications settings. - You are on the latest Dato and macOS versions. - You have tried restarting your computer. - The event is not an all-day event (which are not shown). - The event shows in the Calendar app. - You have not muted the event. - You have not excluded the event with the “Exclude events” setting. - You have not already joined the event in the last 15 minutes. - You have not paused fullscreen notification from a [Focus Filter](https://support.apple.com/guide/mac-help/mchl613dc43f/mac). - If you have “Show for video call events only” enabled, ensure the event shows a video call icon in the event list. - If you have “Show for events with an alert only” enabled, ensure the event has an alert. - If you have “Show only for accepted events” enabled, ensure the event is accepted. - If it’s a Google calendar, it may be caused by [sync issues](https://sindresorhus.com/dato#google-calendar-sync-issue). ### The Dato menu bar item is not dimmed on inactive displays (dual monitors) {#menu-bar-not-dimmed-inactive-display} This is a macOS bug. When using multiple monitors, macOS dims menu bar items on the non-active display. However, it incorrectly fails to dim items that use rich text, which includes Dato’s time zone clocks. This is outside the control of apps, as macOS handles the replication of menu bar items on secondary displays. ### What is the diamond menu bar icon that suddenly appeared? This is the menu item for the “upcoming event in menu bar” feature. It shows this diamond icon when there are no active events. You can choose to either hide it or show a different icon in the settings. ### It does not support the video call service I use I’m happy to add support for more [services](https://sindresorhus.com/dato#supported-video-call-services). Just [send me](https://sindresorhus.com/feedback?product=Dato&referrer=Website-FAQ) an invitation link (replace a few characters at the end to anonymize it). The app can also detect the link of any video call service if you correctly add it in the Calendar app: - Create a new event. - Paste the video call link into the location field. - Accept the dropdown suggestion about it being a video call. If you don’t use the Calendar app, you can add the following to the notes field of an event: ``` ----( Video Call )---- https://some-video-call-service.com/join/23423 ---===--- ``` ### How do I add a calendar? [Add the calendar to the built-in Calendar app](https://support.apple.com/guide/calendar/add-or-delete-calendar-accounts-icl4308d6701/mac) and then enable it in the Dato settings. ### How can I open meeting links (Google Meet, Zoom, Microsoft Teams, etc.) in a specific browser or browser profile? {#velja} Check out my [Velja app](https://sindresorhus.com/velja). I made it exactly for this purpose. It has built-in support for this without any setup. It can also open links to Zoom and Microsoft Teams directly in their desktop app. You can even make it open a specific browser or profile only for links clicked in Dato. Create a custom rule in Velja and set the source app as Dato. ### How can I go back to the current day in the calendar? Click the month and year on the top left. You can also press the Space key. ### I have hidden the toolbar and now I cannot access settings Press the Option key to reveal a button to access settings or press Command+,. ### How can I add multiple time zones to the menu bar? {#time-zones-menu-bar} In the Dato settings, go to the “Time Zones” pane, add a time zone, and in the edit window, check “Show in menu bar”. Do the same with the other time zones you want to show in the menu bar. If you already have the time zones added, right-click a time zone, click “Edit”, and then check “Show in menu bar”. ### Why does the app use a lot of CPU when not in use? You most likely have enabled showing seconds in the menu bar. Unfortunately, updating the menu bar is quite expensive. This is a problem with macOS and out of my control. If you don’t have seconds enabled, please let me know about the excessive CPU usage. ### Why does the menu bar hide when I click the Dato menu bar item? This is a macOS 14 bug and unfortunately not something I can work around. If you work at Apple → [FB13544993](https://github.com/feedback-assistant/reports/issues/457) ### Dato is not in sync with Outlook Dato simply presents events from the macOS calendar system (the builtin Calendar app). It does not do the actual syncing. macOS has known problems with Outlook syncing. [This may help.](https://discussions.apple.com/thread/254365894?sortBy=rank) ### How can I edit an event in Dato? Dato does not support editing events. Simply double-click the event in the event list to edit it in the Calendar app. ### How can I toggle AM/PM for the time? Dato follows the “24-hour time” setting in “System Settings › General › Date & Time”. To hide the AM/PM symbols, disable the “AM/PM symbols” setting in the “Menu Bar” pane in the Dato settings. ### How can I change the first day of the week? Dato adheres to what you have set in “System Settings › General › Language and Region”. ### Can you support natural language input like Fantastical? I hope to add it at some point, but it’s quite a complicated feature. ### Can you integrate with Notion Calendar (previously Cron)? {#notion-calendar} The integration is already done, but Notion Calendar has multiple bugs that make it not work properly. We will have to wait for them to fix these bugs. ### Can you integrate with Vimcal? {#vimcal} [Vimcal](https://www.vimcal.com) currently lacks integration capabilities. I suggest reaching out to them to request support for a feature like [Fantastical’s custom URL scheme](https://flexibits.com/fantastical-ios/help/integration#url-actions). ### Can you localize the app into my language? All the date and time output and the calendar adhere to your locale settings. I have no plans to localize the app itself. ### I added a calendar to the Calendar app but it doesn’t show up in the app You need to enable the calendar in the Dato settings. ### Can you add support for Google Calendar / Outlook 365 / Exchange? It’s already supported. Just add your calendars to the built-in Calendar app and then enable those calendars in the app settings. ### Can you support Google Calendars and Outlook directly without going through the Calendar app? Dato uses macOS’s built-in calendaring system, which syncs seamlessly with Google Calendar, Outlook, and other services. This approach ensures all your calendars are managed centrally by macOS, providing a consistent experience across apps. The Calendar app on macOS is just one of the many apps that utilize this system. Adding direct syncing with Google Calendar and Outlook would offer minimal additional benefit but require significant development effort, which would detract from other important improvements. ### How can I hide the built-in menu bar clock? {#macos11-hide-clock} It’s unfortunately not possible to disable the built-in menu bar clock. However, you have some options: 1. **(Recommended)** In “System Settings › Control Center › Clock Options”, choose the analog clock and disable showing the date. This gets you the closest to how it was on macOS 10.15 as you can use Dato for both date and time. The Clock Options settings with the analog clock chosen
This has the added benefit that while the system clock [shows as disabled](https://user-images.githubusercontent.com/170270/105506021-2c51bb80-5cfc-11eb-84a6-79b62d69d4bc.png) when you enable “Do Not Disturb” (which makes it pretty unreadable), Dato always shows it the same way. 2. Use Dato for showing the date and the built-in clock for the time. 3. Only show an icon for Dato. I would appreciate it if you could take a moment to [complain to Apple](https://www.apple.com/feedback/macos.html) that they should bring back the ability to disable the built-in menu bar clock. For reference, on macOS 10.15, there’s a checkbox called “Show date and time in the menu bar” in “System Preferences › Date & Time › Clock”. This checkbox no longer exists on macOS 11 and later. I have already [reported it to Apple](https://github.com/feedback-assistant/reports/issues/131), but I have yet to get a reply. ### What does the “Hide” button on an event do? {#hide-event} It makes Dato pretend the event does not exist. The event will not be shown in Dato and it will not cause any notifications from Dato. You can unhide events from the `…` menu (at the top-right). ### What does the “Mute” button on an event do? {#mute-event} It makes Dato not notify you about the event. This practically means the event will be ignored for: - Fullscreen notifications - Upcoming event in the menu bar - System notifications for video call events ### How can I customize the menu bar date and time format? If you just want to toggle a certain component, like date or time, see the “Menu Bar” pane in the Dato settings. If you want something more custom, go to the “Date & Time Format” text field. You can specify a [datetime pattern](https://nsdateformatter.com). For example, you could display the full month name, the year, or the day of the year. ### How can I show the menu bar date and time in ISO 8601 format? Either change [this system setting](https://apple.stackexchange.com/questions/191445/standard-iso-8601-week-number-in-calendar-app/209340#209340) or go to the “Menu Bar” pane in the Dato settings, and in the “Date & Time Format” text field, write `YYYY-MM-dd HH:mm:ss`, which is the [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format. ### Why does it not show week 53? You are probably expecting [ISO week-numbering](https://en.wikipedia.org/wiki/ISO_week_date) while having your system set to [Gregorian week numbering](https://en.wikipedia.org/wiki/ISO_week_date#Relation_with_the_Gregorian_calendar). You can change it with [this system setting](https://apple.stackexchange.com/questions/191445/standard-iso-8601-week-number-in-calendar-app/209340#209340). ### Why does it show the last days of December as week 1? That is called [ISO week-numbering](https://en.wikipedia.org/wiki/ISO_week_date). ### It shows the incorrect week number {#incorrect-week-number} You are probably expecting [ISO week-numbering](https://en.wikipedia.org/wiki/ISO_week_date) while having your system set to [Gregorian week numbering](https://en.wikipedia.org/wiki/ISO_week_date#Relation_with_the_Gregorian_calendar), or the inverse. You can change it with [this system setting](https://apple.stackexchange.com/questions/191445/standard-iso-8601-week-number-in-calendar-app/209340#209340). ### How can I change the week number to ISO 8601 format? Change [this system setting](https://apple.stackexchange.com/questions/191445/standard-iso-8601-week-number-in-calendar-app/209340#209340) to use [ISO 8601](https://en.wikipedia.org/wiki/ISO_week_date) week numbers. ### How can I open a calendar event in my favorite calendar app (Fantastical, BusyCal, etc.) instead of the built-in Calendar app? ~~Dato uses the system default calendar app. To change the default calendar app, open the Calendar app’s settings, and in the “Default calendar app” setting, select the app you want.~~ **Because of a [macOS bug](https://github.com/feedback-assistant/reports/issues/290), this does not work. Instead, drag an event from the Calendar app into Finder, right-click on it, select “Get Info”, select your calendar in the “Open with” field, and click “Change All”. Then relaunch Dato.** Dato supports opening calendar events directly in Calendar, Fantastical, BusyCal, Outlook, and Google Calendar (web). For other apps, Dato will just open the app. ### How can I send calendar invites when creating an event? In the new event window, click the “More Settings” button, and send the invites from the Calendar app. Built-in support for sending calendar invites directly from Dato is not possible, as Apple does not currently provide this capability for third-party apps. ### How can I make my calendar refresh more often? {#refresh-interval} Open the Calendar app’s settings, go to the “Accounts” pane, choose the relevant calendar service in the left sidebar, and then change the “Refresh Calendars” setting. Ideally, it should be set to “Push”, but not all services support that, like Google Calendar. ### How can I accept/decline invites? Unfortunately, Apple does not allow third-party apps to manage invites. As a workaround, double-click the event in the list to open it in the Calendar app, where you can accept or decline the invite. ### How can I get system notifications for upcoming events? {#notifications} Dato does not support this as you can just set it up in the built-in Calendar app. Open the Calendar app’s settings, select the “Alerts” pane, and there you can choose when to be notified. What Dato does support is showing a notification right when an event for a video call starts. The notification includes a button to join the video call directly. You can enable this notification in the Dato settings. You can also enable fullscreen notifications. ### Can I use the time travel slider to check times on future dates? Select any date in the calendar and then use the time travel slider to adjust the time for that day. ### How can I enable fullscreen notifications only at certain times or for certain conditions? You can use the [Focus Filter](https://support.apple.com/guide/mac-help/mchl613dc43f/mac) that comes with Dato to pause fullscreen notifications when in certain focus modes. Focus Filters are [broken on macOS 26.5 and later](https://developer.apple.com/forums/thread/826766) because of a macOS bug. Alternatively, use the built-in Shortcuts app. You can use the `Set Fullscreen Notifications State` action provided by Dato to enable or disable fullscreen notifications. For example, to only enable fullscreen notifications during work hours, you will need to create two shortcuts. One to enable fullscreen notifications and one to disable it. Then use Shortcuts automations to run them at the correct times. ### How can I enable fullscreen notification only when a certain Focus mode is active? Same as the above but trigger the shortcuts when the [Focus mode](https://support.apple.com/guide/mac-help/mchl613dc43f/mac) changes. ### How can I quickly switch between different sets of calendars? {#calendar-sets} You can use the Shortcuts app to create “calendar sets” that quickly enable or disable specific calendars for different situations (for example, “Work” vs “Personal”). Use the `Set Calendar Enabled State` action provided by Dato. When no specific calendar is provided, the action applies to all calendars. When no feature is specified, it applies to all features. You can also use `Set Reminder List Enabled State` for reminder lists. For example, create a “Work Mode” shortcut that disables your personal calendars and enables your work calendars, and a “Personal Mode” shortcut that does the inverse. Use Shortcuts automations to run them automatically based on time of day or Focus mode. ### Can you add support for showing an analog clock like the system clock? I have no plans to add that, but you can make it work by unchecking the “Time” setting in Dato and keeping the system clock in analog mode. ### Can you add support for flashing the time separator like the system clock? I have no plans to add that, but you can make it work by unchecking the “Time” setting in Dato and keeping the system clock. ### How can I show smart lists from the Reminders app in Dato? Dato can only show normal lists. macOS does not let third-party apps access smart lists. ### Can I add links, images, flags, or tags to reminders in the “New Reminder” window? No, Apple does not expose these features to third-party apps. ### How can I make the text in Dato be more easily readable? Try turning off the “Vibrancy” setting. You can also try increasing the text size with the “Larger text” setting. ### What does the `ⓘ` symbol in the “upcoming event in menu bar” item mean? It indicates that there are multiple ongoing events, but only one is shown. ### My Google Calendar does not update in the app {#google-calendar-sync-issue} The events may not have been [fetched yet by macOS](https://sindresorhus.com/dato#refresh-interval). Or you may have to re-authenticate your Google account. Open the Calendar app’s settings, go to the “Accounts” pane, and try to remove and re-add the Google account. ### Can I show UTC time in the menu bar? Yes. 1. Open the Dato settings 1. Go to the “Time Zones” pane 1. Click the plus button 1. Write “utc” 1. Select the “UTC” item 1. Click “Add” 1. Enable “Show in menu bar” 1. Click “Save” ### How can I hide the Dato clock when doing a specific task or at a certain time of the day? This is a perfect use case for the built-in Shortcuts app. You can use the `Quit App` and `Open App` actions to quit and relaunch Dato whenever needed. For example, you could create a focus shortcut that quits Dato, plays some music, turns off notifications, etc. To hide the Dato clock at a certain time of the day, use Shortcuts automations. ### How can I show day of year in the menu bar? In the “Custom date & time format” setting, write `D` to show the [day of year](https://nsidc.org/data/user-resources/help-center/day-year-doy-calendar). [Learn more](https://www.unicode.org/reports/tr35/tr35-dates.html#dfst-day) ### Can I change the background color of Dato? No, but you can make it white/black by turning off the “Vibrancy” setting. ### Can you add more menu bar icons? I’m happy to consider requests. You can find icons [here](https://developer.apple.com/sf-symbols/) and [here](https://thenounproject.com). ### The widgets provided by Dato do not show up in the widget picker This is a known macOS bug. Restarting your computer usually fixes it. ### The widgets provided by Dato are white or black with no content Same answer as above. ### The time zone widget resets each time Dato updates This is a macOS bug and unfortunately out of my control. Dato simply defines the parameters for the widget, but macOS is the one that shows the configuration screen and saves your choices from there. ### Can it show the list of events in a separate menu item from the calendar and time zones? No, but you could use Dato in combination with my [Today](https://sindresorhus.com/today) app. ### How can I show todos from Things in Dato? {#things} Dato integrates with the Reminders app only. However, you can use the Shortcuts app to sync todos from [Things](https://culturedcode.com/things/) to the Reminders app, which will make Dato show your todos. [Here is a shortcut](https://www.icloud.com/shortcuts/2b856dd9607f412fb660d009a03d60a8) that does this. Run it and then enable the “Things” reminders list in the Dato settings. To keep the todos in sync, use the [Shortery](https://apps.apple.com/app/id1594183810) app to run the shortcut when Things becomes inactive, as Shortcuts automations can only run when an app opens or quits. Alternatively, place the shortcut in the menu bar and run it manually. ### How can I show seconds in the menu bar only when connected to power? Use Shortcuts automations to run a shortcut when connected and disconnected from power. - [Show seconds shortcut](https://www.icloud.com/shortcuts/41adf21d1bea44499d5034864687d01d) - [Hide seconds shortcut](https://www.icloud.com/shortcuts/dcb7b8c4d66740a8a8ba8abae063e661) ### Can Dato support Focus Filters? {#focus-filters} Dato has a Focus Filter for pausing fullscreen notifications. Ideas for other filters welcome. Focus Filters are [broken on macOS 26.5 and later](https://developer.apple.com/forums/thread/826766) because of a macOS bug. ### Can I change the chime frequency for the “Hourly Chime” feature? I don’t plan to add more settings to this feature. However, you can achieve this by using the Shortcuts app. Make a shortcut using the “Get Sound” action provided by Dato. Use the [Shortery](https://apps.apple.com/app/id1594183810) app to run it at the interval you prefer, as Shortcuts automations cannot run at an interval. [Example shortcut.](https://www.icloud.com/shortcuts/72e44ca37e024b8ab016bd827557f00f) ### How can I transfer my settings from the App Store version to the Setapp version? Run this command in the Terminal app: ```sh defaults export com.sindresorhus.Dato - | defaults import com.sindresorhus.Dato-setapp - ``` And to transfer the other way: ```sh defaults export com.sindresorhus.Dato-setapp - | defaults import com.sindresorhus.Dato - ``` ### How is this different from Fantastical? Fantastical is a full-blown calendar app, while Dato is a read-only view of your events. Fantastical is a replacement for the built-in Calendar app. You can use both Fantastical and Dato at the same time. Dato even has integration with Fantastical, so you can open events in Dato directly in Fantastical. Fantastical also has a menu bar item, but many people prefer the UI of Dato. Dato also shows time zones and has more customizability for what’s shown in the menu bar. Dato can replace the system date/time, for example. ### How is this different from iStat Menus? iStat Menus lets you show different kinds of info in the menu bar, like system stats, network speed, etc. Dato is focused on date and time only. Dato also looks better. ### How is it different from Itsycal? Dato is not just a calendar app, but also includes menu bar clock replacement, time zones, upcoming event in menu bar, fullscreen notifications, and a lot more. Try both (see the [Dato trial](https://sindresorhus.com/dato#trial)) and see for yourself. ### Why the name “Dato”? It means “date” in Norwegian. I just wanted a short, unique, and relevant name. ## Scripting ### Shortcuts The app comes with support for the Shortcuts app. Look up the app in the Shortcuts app to see what it provides. ### Events The [distributed notification](https://sindresorhus.com/apps/faq#distributed-notifications) `com.sindresorhus.Dato.joinedVideoCall` is emitted when you join a video call from Dato. ## Older Versions - [5.7.2](https://www.dropbox.com/scl/fi/3q3c3v0umpp0z43lvnbdd/Dato-5.7.2-macOS-15-1777489241.zip?rlkey=vqy6ggjz2b3g3qejlyz12k74p&raw=1) for macOS 15 - [5.4.4](https://github.com/sindresorhus/sindresorhus.github.com/releases/download/v1.0.0/Dato.5.4.4.-.macOS.14.zip) for macOS 14 - [5.1.3](https://github.com/sindresorhus/meta/files/14097627/Dato.5.1.3.-.macOS.13.zip) for macOS 13 - [4.3.3](https://github.com/sindresorhus/meta/files/10516478/Dato.4.3.3.-.macOS.12.zip) for macOS 12 - [3.3.8](https://github.com/sindresorhus/meta/files/8935698/Dato.3.3.8.-.macOS.11.zip) for macOS 11 - [2.6.1](https://github.com/sindresorhus/meta/files/6758848/Dato.2.6.1.-.macOS.10.15.zip) for macOS 10.15 - [1.4.9](https://github.com/sindresorhus/meta/files/5360452/Dato.1.14.9.-.Special.last.Mojave.compatible.release.zip) for macOS 10.14 These are free for everyone but they will not run on newer macOS versions. --- # Gifski Convert videos to high-quality GIFs. URL: https://sindresorhus.com/gifski Turn a video into a GIF that still looks like the video. Gifski uses thousands of colors per frame, so gradients stay smooth instead of turning into bands. It’s a macOS app for the [gifski encoder](https://gif.ski), which uses [pngquant’s](https://pngquant.org) fancy features for efficient cross-frame palettes and temporal dithering. If you don’t have a video, you can try the app out with [this one](https://github.com/sindresorhus/meta/assets/170270/6606c1d2-c0ce-4b7e-9eb8-a3916e601e48). --- *Help test the next major version of Gifski on [TestFlight](https://testflight.apple.com/join/iCyHNNIA).* --- # Black Out Hide sensitive parts of an image. URL: https://sindresorhus.com/black-out Put black boxes over the private parts of a screenshot or photo before you share it. The app also removes the metadata, like when and where it was captured. For example, hide the names in a Slack conversation you want to post on X (Twitter). ## Frequently Asked Questions {#faq} ### Can you support blurring and pixelation? Blurring and pixelation are intentionally not supported as they can sometimes [be reversed](https://dheera.net/projects/blur). The only reliable way to redact something is to put a black box over it. ### I can already do this in the Preview app! You can do this in any graphics app. The point of this app is to make the task super easy to do. Most graphics apps, like Preview, Pixelmator, and Photoshop, preserve metadata, which means you could accidentally leak information like the capture location. Black Out strips out all metadata. It can also be run directly from Finder as a [Quick Action](https://support.apple.com/guide/mac-help/mchl97ff9142/mac). ### Does it support PDF? You can open a PDF document, but you have to export it as a PNG image. It’s almost impossible to reliably export redacted PDFs. ### What is the text in the icon? It’s from Apple’s inspirational [“Here’s to the Crazy Ones” TV commercial](https://www.youtube.com/watch?v=-z4NS2zdrZc). ## Older Versions - [2.6.0](https://www.dropbox.com/scl/fi/t1hteypc07ewyoqdk1ph9/Black-Out-2.6.0-macOS-15-1777576268.zip?rlkey=rgxtljtxrft0ygt7q60v512i3&raw=1) for macOS 15 - [2.4.0](https://github.com/user-attachments/files/18210600/Black.Out.2.4.0.-.macOS.14.zip) for macOS 14 - [2.3.1](https://github.com/sindresorhus/meta/files/13923936/Black.Out.2.3.1.-.macOS.13.zip) for macOS 13 - [2.2.0](https://github.com/sindresorhus/meta/files/10773680/Black.Out.2.2.0.-.macOS.12.zip) for macOS 12 - [2.0.4](https://github.com/sindresorhus/meta/files/8759655/Black.Out.2.0.4.-.macOS.11.zip) for macOS 11 - [1.8.2](https://github.com/sindresorhus/meta/files/7454156/Black.Out.1.8.2.-.macOS.10.15.zip) for macOS 10.15 These are free for everyone but they will not run on newer macOS versions. --- # HEIC Converter Convert HEIC images to JPEG or PNG. URL: https://sindresorhus.com/heic-converter Convert [HEIC](https://www.macworld.co.uk/feature/iphone/what-is-heic-3660408/) photos from your iPhone to JPEG or PNG, so you can upload them anywhere and share them with people who don’t use Apple devices. HEIC is Apple’s default image format since iOS 11, replacing JPEG. HEIC uses more advanced and modern compression methods to achieve much smaller file sizes with the same visual quality. Unfortunately, many websites, apps, and devices outside of Apple’s platforms still do not support HEIC. If you don’t have any HEIC images, you can try the app out with [this one](https://sindresorhus.com/heic-converter/heic-example.heic). ## Frequently Asked Questions {#faq} ### Does it preserve 10-bit depth? No. JPEG only supports 8-bit. PNG supports 8-bit and 16-bit, but macOS doesn’t have a way to convert 10-bit HEIC to 16-bit PNG, so it ends up as 8-bit too. ### Does it support other HEIF variants like `.heif` or `.hif`? No. Only `.heic` is supported at the moment because macOS support for other variants is buggy. ### Can you support converting JPEG to HEIC? I don’t have plans to support JPEG to HEIC conversion. While HEIC offers some benefits over JPEG, I believe [JPEG XL](https://en.wikipedia.org/wiki/JPEG_XL) is a more promising next-generation image format: - Lossless conversion from JPEG to JPEG XL - Superior compression compared to JPEG and HEIC - Support for HDR, wide color gamuts, and animation - Royalty-free, open standard I expect JPEG XL to gain more widespread support and become the preferred format in the coming years. At that point, I plan to add JPEG XL conversion capabilities here. ### What’s the benefit of this app over the built-in Quick Actions converter? The built-in converter (right-click › Quick Actions › Convert Image) works well for basic conversions. This app offers adjustable JPEG quality and granular metadata control (separately toggle location data and modification dates instead of all-or-nothing). ## Older Versions - [3.5.0](https://www.dropbox.com/scl/fi/3pp92ufejv6rixixkkzcl/HEIC-Converter-3.5.0-macOS-15-1777070030.zip?rlkey=g248y3inhtf5ld3buatxxh9ex&raw=1) for macOS 15+ - [3.3.0](https://github.com/user-attachments/files/18555573/HEIC.Converter.3.3.0.-.macOS.14.zip) for macOS 14+ - [3.2.0](https://github.com/sindresorhus/meta/files/13981994/HEIC.Converter.3.2.0.-.macOS.13.zip) for macOS 13+ - [3.0.1](https://github.com/sindresorhus/meta/files/11401710/HEIC.Converter.3.0.1.-.macOS.12.zip) for macOS 12+ - [2.1.5](https://github.com/sindresorhus/meta/files/9218007/HEIC.Converter.2.1.5.-.macOS.11.zip) for macOS 11+ - [2.1.5](https://github.com/sindresorhus/meta/files/8817868/HEIC.Converter.2.1.5.-.macOS.10.15.zip) for macOS 10.15+ - [1.9.0](https://github.com/sindresorhus/meta/files/6715716/HEIC.Converter.1.9.0.-.macOS.10.14.zip) for macOS 10.14+ - [1.5.3](https://github.com/sindresorhus/meta/files/13539124/HEIC-Converter-for-macOS-10.13.zip) for macOS 10.13+ ## Non-App Store Version A special version for users that cannot access the App Store. It won’t receive automatic updates. I will update it here once a year. [Download](https://www.dropbox.com/scl/fi/ftfkqamu1yd2pjk4r8jyb/HEIC-Converter-3.6.0-1777069218.zip?rlkey=8ljysol8pl6syee2t5ubk46e3&raw=1) *(3.6.0)* *Requires macOS 26 or later* --- # Lungo Prevent your Mac from going to sleep. URL: https://sindresorhus.com/lungo Keep your Mac awake and the screen on, for a set time or until you turn it off. Useful for presentations, downloads, and reading without touching the keyboard. ## Frequently Asked Questions {#faq} ### Lungo did not keep my computer awake - If you have the “Allow display to sleep while keeping computer awake” setting enabled, the computer is still awake even if it looks like it’s sleeping because the screen is off. - If you close the lid (clamshell mode), Lungo is only able to keep your Mac awake if it’s connected to a charger and an external display. This is a macOS limitation. - If you have the “Pause while screen is locked” setting enabled, you may have locked the screen before leaving it, which would cause Lungo to not keep your computer awake. - If you have the “Deactivate when switching to battery” setting enabled and you disconnect the power adapter, Lungo would not keep your computer awake. You might have accidentally unplugged it or there might have been a power failure. - If you have set a sleep schedule in “System Settings › Battery › Schedule”, it will take priority over Lungo. This is out of Lungo’s control. - If you have set the computer to log out after a certain amount of time in “System Settings › Privacy & Security › Advanced”, it will take priority over Lungo. This is out of Lungo’s control. - If you see apps open again when you wake up your computer, it means your computer was restarted for some reason. Lungo cannot keep your computer from restarting. Some common reasons it may have restarted are a power outage, macOS crash, or scheduled shutdown/restart (in Battery system settings). + You can [check how long your computer has been awake and when it was last rebooted](https://www.macobserver.com/tips/quick-tip/mac-system-uptime-terminal/) to narrow down the problem. You can also check when the computer was last logged in by typing the command `last` in the Terminal app. Some things you could try: - Make sure you are on the latest macOS and Lungo versions. - [Reset NVRAM](https://support.apple.com/en-us/HT204063) - [Reset SMC](https://support.apple.com/en-us/HT201295) ### Does it work when the lid is closed? {#lid-closed} No, that’s not allowed for apps on the App Store, for good reasons. Imagine you activate it while your computer is doing a heavy task and then put the laptop in your bag. Your laptop could easily overheat. The exception to this is if it’s connected to a charger and an external display. However, if you want this, there are some solutions [here](https://apple.stackexchange.com/questions/2389/is-there-any-way-to-set-a-macbook-pro-to-not-sleep-when-you-close-the-lid?rq=1). ### Does Lungo keep my Mac awake even if there is a scheduled sleep? If you have set a sleep schedule in “System Settings › Battery › Schedule”, it will take priority over Lungo. This is out of Lungo’s control. ### Can I left-click the icon to toggle it like with Caffeine? Yes, choose “Activate on Left-click” in the settings. ### Can Lungo automatically activate when I open a certain app? I don’t plan to support this. It’s a lot of work to implement and only a few people have requested it. However, you can achieve it using the Shortcuts app. Create a new shortcut with the “Set Enabled State” action provided by Lungo. Use Shortcuts automations to run the shortcut when a certain app opens. You could also use BetterTouchTool or Keyboard Maestro. ### Can Lungo automatically activate on a set schedule? I don’t plan to do this built-in, but you can achieve it with Shortcuts automations. ### Can Lungo automatically activate when I switch to a specific focus mode? I don’t plan to do this built-in, but you can achieve it with Shortcuts automations. ### How can I make Lungo be activated until a specific time? This is not supported built-in, but you can use the Shortcuts app to achieve it. Get [this shortcut](https://www.icloud.com/shortcuts/9aa69e6db4ba48289e59214d10a405b2) and either pin it to the menu bar or add a global keyboard shortcut to trigger it. You could also use Raycast, BetterTouchTool, or Keyboard Maestro to trigger it. ### Can I use a custom duration? {#custom-duration} Lungo comes with a set of commonly used durations, which should be enough for most users. People love Lungo for its simplicity. Not having custom times also helps prevent decision fatigue. Lungo has tens of thousands of users and only a few people have requested support for custom durations. However, power users can take advantage of the Shortcuts app to use custom durations. Drag the “Set Enabled State” Lungo action into the shortcut editor in the Shortcuts app. Click “Show more” and then choose a custom duration. You can pin the shortcut workflow to the menu bar for easy access or set a global keyboard shortcut for it. ### Can it keep my status on Slack, Microsoft Teams, etc, show as active? No, that’s not the purpose of this app. Different apps use different techniques for detecting active status, which could change at any time. ### How can I transfer my settings from the App Store version to the Setapp version? Run this command in the Terminal app: ```sh defaults export com.sindresorhus.Lungo - | defaults import com.sindresorhus.Lungo-setapp - ``` And to transfer the other way: ```sh defaults export com.sindresorhus.Lungo-setapp - | defaults import com.sindresorhus.Lungo - ``` ### How is it different from Amphetamine? Amphetamine has lots of features. Most of which I would never use. It ships with a myriad of menu bar icons to choose from, but none that looks good. With Lungo, I wanted a focused and simple app with great defaults. ## Scripting You can control Lungo using anything that supports opening a URL with a custom scheme. *Lungo also comes with support for Shortcuts.* > [!TIP] > You can [run shortcuts from the command-line](https://support.apple.com/guide/shortcuts-mac/run-shortcuts-from-the-command-line-apd455c82f02/mac). ### Integrations - [lungo-cli](https://github.com/sindresorhus/lungo-cli): Command-line tool. - [Raycast commands](https://github.com/raycast/script-commands/tree/master/commands#lungo) - Note: Raycast commands are not the same as plugins. [How to install commands.](https://github.com/raycast/script-commands#install-script-commands-from-this-repository) ### Custom URL scheme For example, to activate Lungo for 10 minutes, run this terminal command: ```sh open --background 'lungo:activate?minutes=10' ``` #### Commands - `activate` - `deactivate` - `toggle` The `activate` and `toggle` commands support the parameters `hours` and `minutes`, which can be used together or individually. If you don’t specify a duration, it will use the default duration you have set in Lungo. *(Use [`lungo-cli`](https://github.com/sindresorhus/lungo-cli) if you need to get the active state)* #### Examples ##### Shell ```sh # Deactivate Lungo open --background 'lungo:deactivate' # Activate Lungo for 1 hour and 30 minutes open --background 'lungo:activate?hours=1&minutes=30' # Activate Lungo for 1 hour and 30 minutes (Alternative) open --background 'lungo:activate?hours=1.5' # Toggle Lungo with the default duration open --background 'lungo:toggle' # Toggle Lungo for 10 minutes open --background 'lungo:toggle?minutes=10' ``` ##### Node.js ```js import {execFileSync} from 'node:child_process'; execFileSync('open', ['--background', 'lungo:toggle']); ``` ##### Swift ```swift import Cocoa let command = "lungo:toggle" let configuration = NSWorkspace.OpenConfiguration() configuration.activates = false NSWorkspace.shared.open(URL(string: command)!, configuration: configuration) ``` ##### AppleScript ```applescript do shell script "open --background 'lungo:toggle'" ``` ##### Python ```python import subprocess subprocess.run(['open', '--background', 'lungo:toggle']) ``` ## Older Versions - [2.7.2](https://www.dropbox.com/scl/fi/khm2quv6q3c5wq9gzvlvc/Lungo-2.7.2-macOS-15-1777060779.zip?rlkey=94p4xjljg9c5caxgnhcw21ya0&raw=1) for macOS 15 - [2.6.0](https://github.com/sindresorhus/sindresorhus.github.com/releases/download/v1.0.0/Lungo.2.6.0.-.macOS.14.zip) for macOS 14 - [2.4.2](https://github.com/sindresorhus/meta/files/14276605/Lungo.2.4.2.-.macOS.13.zip) for macOS 13 - [2.2.2](https://github.com/sindresorhus/meta/files/11292407/Lungo.2.2.2.-.macOS.12.zip) for macOS 12 - [2.0.4](https://github.com/sindresorhus/meta/files/8870132/Lungo.2.0.4.-.macOS.11.zip) for macOS 11 - [1.9.0](https://github.com/sindresorhus/meta/files/7404362/Lungo.1.9.0.-.macOS.10.15.zip) for macOS 10.15 - [1.7.0](https://github.com/sindresorhus/meta/files/5507155/Lungo-1-7-0.zip) for macOS 10.14 - [1.6.0](https://github.com/sindresorhus/meta/files/4556911/Lungo-1.6.0-High-Sierra.zip) for macOS 10.13 These are free for everyone but they will not run on newer macOS versions. --- # Battery Indicator Remaining battery time in your menu bar. URL: https://sindresorhus.com/battery-indicator See how long your battery will last, right in your menu bar, without clicking anything. You can show the percentage instead. ## Frequently Asked Questions {#faq} ### The app does not show up in the menu bar [Try this](https://sindresorhus.com/apps/faq#app-not-showing-in-menu-bar) You may also have enabled the “Hide while on power” preference, which hides the menu bar icon while the power adapter is connected. Launch the app again to reveal the menu bar item for 5 seconds or disconnect the power adapter. ### The estimated time left is incorrect The number comes from macOS and the app has no control over it. ### The menu bar icon is vertically stretched when shown on a secondary display This is a macOS 11 bug. I have tried to work around this issue, but it’s out of my control. ### Why does the menu bar icon show `…` when I unplug the power adapter? The system needs some time to accurately calculate the time remaining estimate. ### How do I remove the system battery menu bar item? Drag it out of the menu bar while pressing Command. ### Can it show “apps using significant energy” like the built-in battery indicator? It can unfortunately not show this because of restrictions ([sandboxing](https://sindresorhus.com/apps/faq#macos-sandbox)) imposed on apps on the App Store. However, you could change the menu bar item type to text instead of the icon and use this app in combination with the system battery indicator. ### Can it have a “charge to full now” button? This is not possible for the same reason as mentioned above. ### Can it play a sound when the battery is charged a certain percentage? {#notification-sound} The app has a built-in sound when showing notifications. However, if you want a different sound, you can disable the default notification sound in the “Notification Settings” and then follow the below steps. This is a perfect use case for the built-in Shortcuts app. You can use the `Play Sound` action to play the sound you want. To run the shortcut when the battery is at a certain percentage, use Shortcuts automations. You can find sound effects [here](https://pixabay.com/sound-effects/search/interface/). ### Can the battery icon hide when the battery is charged a certain percentage? This is a perfect use case for the built-in Shortcuts app. Create a shortcut that quits the app and one that launches it. To run the shortcut when the battery is at a certain percentage, use Shortcuts automations. ## Older Versions - [2.19.0](https://www.dropbox.com/scl/fi/14amy0g1r6sjyhg48cjns/Battery-Indicator-2.19.0-macOS-15-1772299240.zip?rlkey=e647a9azxyif2mnyuqot8jya7&raw=1) for macOS 15 - [2.18.0](https://github.com/user-attachments/files/19015442/Battery.Indicator.2.18.0.-.macOS.14.zip) for macOS 14 - [2.16.1](https://github.com/sindresorhus/meta/files/13942534/Battery.Indicator.2.16.1.-.macOS.13.zip) for macOS 13 - [2.14.2](https://github.com/sindresorhus/meta/files/10759031/Battery.Indicator.2.14.2.-.macOS.12.zip) for macOS 12 - [2.12.3](https://github.com/sindresorhus/meta/files/8759816/Battery.Indicator.2.12.3.-.macOS.11.zip) for macOS 11 - [2.7.1](https://github.com/sindresorhus/meta/files/6565005/Battery.Indicator.2.7.1.-.macOS.10.15.zip) for macOS 10.15 - [2.1.0](https://github.com/sindresorhus/meta/files/4127047/Battery-Indicator-2.1.0-Mojave.zip) for macOS 10.14 These are free for everyone but they will not run on newer macOS versions. --- # Blear Transform photos into blurry wallpapers. URL: https://sindresorhus.com/blear Turn a photo into a soft, blurry wallpaper, so your Home Screen icons and Lock Screen clock stay easy to read. Use your own photos or the included ones. --- # About URL: https://sindresorhus.com/about Hi, I’m Sindre ([hear how to say it](https://sindresorhus.com/assets/sindre-sorhus-pronunciation.m4a)). I make apps and open-source software, full time and on my own. In 2014, I quit my office job to backpack around Southeast Asia and work on open source. The backpacking ended, but the open source never did. My time goes to [apps](https://sindresorhus.com/apps) for Apple devices and to open source. The apps are small, focused tools that each solve one problem well, and many of them are free. You can [read what people say about them](https://sindresorhus.com/apps/reviews), or [see what I’m working on now](https://sindresorhus.com/now). In open source, I maintain [many npm packages](https://www.npmjs.com/~sindresorhus) and [popular projects](https://github.com/search?q=user:sindresorhus+user:chalk+user:avajs+user:xojs+user:soml-lang+archived:false&type=Repositories), from Node.js libraries to CLI tools and Swift packages, and I started [Awesome](https://github.com/sindresorhus/awesome), the lists about all kinds of interesting topics. @SocialLinks ## Some Things About Me @Cards { - Grew up in Norway - Started with [LEGO](https://sindresorhus.com/about/lego.jpg), then made [simple websites](https://sindresorhus.com/1999) at nine - My LEGO city took up almost the whole bedroom - Didn’t learn programming properly until my twenties - Before that, I copied PHP and JavaScript without quite understanding them - Got into open source by contributing to [TodoMVC](https://todomvc.com), and later became one of its maintainers - Speak Swift, JavaScript, English, and Norwegian, in that order - Not a company, just me - Coined the term “[ponyfill](https://github.com/sindresorhus/ponyfill)” - Started [Awesome](https://github.com/sindresorhus/awesome), one of the most-starred repos on GitHub - Love [Cà phê muối](https://en.wikipedia.org/wiki/Vietnamese_iced_coffee#Variations), [Es yen](https://en.wikipedia.org/wiki/Es_yen), and [Kaeng khiao wan](https://en.wikipedia.org/wiki/Green_curry) - Vietnamese salt coffee, Thai iced espresso, and Thai green curry - Once coded for 43 hours straight. Would not recommend - Unicorns everywhere. Open source is hard work, so it should also be fun - On [tabs](https://en.wikipedia.org/wiki/Indentation_style#Tab_vs._space) since the ’90s - Permanent dark mode } ## How I Learned to Make Things At school, we watched Flash movies and played Flash games in every break. I wanted to know how they were made, but unlike websites, they had no “View Source”. So I decompiled them. Nobody obfuscated their files back then, so everything was there to see. Then I started to change them. I redrew the characters, added new enemies, and put in high scores. I didn’t really understand the code. I changed things, broke them, and changed them back until the game did what I wanted. The first time other people played a game I had glued together, I was very proud. That is still how I learn. I take something apart to see how it works, and then I make my own. Today, it’s macOS internals instead of Flash games. ## The Apps That Made Me Want to Make Apps {#why-mac-apps} In 2007, I left Windows for my first Mac, a 17-inch MacBook Pro, right in the middle of what people called the “Delicious Generation”. The name came from [Delicious Library](https://en.wikipedia.org/wiki/Delicious_Library), an app that put your books and movies on a realistic wooden shelf. Independent developers were making Mac apps that felt more like crafted objects than software, and [Coda](https://web.archive.org/web/20080526024010/http://www.panic.com/coda/) and [Things](https://web.archive.org/web/20090302220524/http://www.culturedcode.com/things/) were my favorites. Coda put a whole web workflow (editor, preview, file transfer, and terminal) into one beautiful window. Things made a to-do list feel calm. Small teams made them, and every detail felt cared for. I remember thinking: “One day, I’m going to make an app on that level.” Then, for a long time, nothing happened. My biggest blocker was Objective-C. It never clicked with me: the square brackets, the manual memory management, the header files. So I made websites, and then open source, and then much more open source. In 2014, Apple released Swift, and that changed everything. I started learning it the same day. The first app still took three more years. In January 2017, I got an idea for a small Mac app and had some free time, so I jumped right in and learned what I needed as I went. A month later, I released [my first Mac app](https://sindresorhus.com/battery-indicator). It was a battery indicator. Not exactly Coda. But after ten years of dreaming, it took one month to make. That era is mostly gone. Even [Delicious Library shut down](https://daringfireball.net/linked/2024/11/26/delicious-library-eol) in 2024. But the goal is still the same: make [apps](https://sindresorhus.com/apps) that would wow the younger me who opened Coda for the first time. Apple has featured some of them, but none of them are on that level yet. I’m slowly getting there. ## Changelog @Changelog { - 2026 - Added: [Awesome](https://github.com/sindresorhus/awesome) hit 500K stars on GitHub - Changed: [Rewrote this website in Swift](https://sindresorhus.com/blog/swift-website) - 2025 - Added: Released my [60th app](https://sindresorhus.com/menu-drop) - 2024 - Added: 5 million users of my apps - Added: Love for [Vietnam](https://www.instagram.com/p/DCM9t4RzYY7/) - Added: [Supercharge](https://sindresorhus.com/supercharge) app - 2023 - Added: Love for [Japan](https://www.instagram.com/p/CqaXPqvvsau/) - Added: Released my [40th app](https://sindresorhus.com/menu-bar-calendar) - 2022 - Added: [Velja](https://sindresorhus.com/velja), [One Thing](https://sindresorhus.com/one-thing), and [Pure Paste](https://sindresorhus.com/pure-paste) apps - 2021 - Removed: [CommonJS](https://gist.github.com/sindresorhus/a39789f98801d908bbc7ff3ecc99d99c) from my packages - Added: [Actions](https://sindresorhus.com/actions) app - 2020 - Added: Released my [10th app](https://sindresorhus.com/plash) - 2019 - Added: [My 1000th repo](https://github.com/sindresorhus/capture-website) - Added: [Dato](https://sindresorhus.com/dato) app - Added: [type-fest](https://github.com/sindresorhus/type-fest) - 2018 - Changed: Relationship status, to [married](https://www.instagram.com/p/Bq7mwUCgl9S/) - Added: [Gifski](https://sindresorhus.com/gifski) app - Added: [Ky](https://github.com/sindresorhus/ky) - 2017 - Added: Released my [first Mac app](https://sindresorhus.com/battery-indicator) - Added: My first app on [Setapp](https://sindresorhus.com/lungo) - 2016 - Removed: Being broke - Added: More unicorns, with [eslint-plugin-unicorn](https://github.com/sindresorhus/eslint-plugin-unicorn) - 2015 - Added: Love for Thailand - Added: [XO](https://github.com/xojs/xo), [np](https://github.com/sindresorhus/np), and [execa](https://github.com/sindresorhus/execa) - 2014 - Removed: Office job - Changed: Salary, to savings - Added: One-way ticket to Thailand - Changed: Time zone, from UTC+1 to UTC+7 - Removed: Cold winters - Added: [Awesome](https://github.com/sindresorhus/awesome), [Got](https://github.com/sindresorhus/got), and [AVA](https://github.com/avajs/ava) - Added: Swift - Removed: Objective-C - Added: First sweet internet dollars - 2013 - Changed: Laptop, to a 15-inch [MacBook Pro](https://support.apple.com/en-us/111971) - Added: Released my [first iPhone app](https://sindresorhus.com/front-flash) - Added: Released my first popular project, [Chalk](https://github.com/chalk/chalk) - 2012 - Added: 2 months as a contractor for Google, on [Yeoman](https://yeoman.io) - Added: [My first contribution to jQuery](https://github.com/jquery/jquery/commit/92cd9990971a097b6639607b0d1172e9fe6d0dca) - Added: My first npm package, [grunt-recess](https://github.com/sindresorhus/grunt-recess) - 2011 - Added: [My first open-source repo](https://github.com/sindresorhus/sindresorhus.github.com), for this website - Added: My first contribution to [TodoMVC](https://todomvc.com), because I liked its logo - Added: Python and Django, where real coding started - Removed: PHP - 2010 - Added: [Twitter account](https://x.com/sindresorhus) - 2009 - Added: GitHub account - Added: My first iPhone, a [3GS](https://support.apple.com/en-us/112307) - 2008 - Removed: School - 2007 - Added: My first Mac, a 17-inch [MacBook Pro](https://support.apple.com/en-us/docs/mac/pp215) - Added: A dream of making apps like [Coda and Things](https://sindresorhus.com/about#why-mac-apps) - Removed: Windows - 2005 - Added: My first laptop, a 17-inch [Dell Inspiron 9300](https://www.ifixit.com/Device/Dell_Inspiron_9300) - 2000 - Added: My [second website](https://sindresorhus.com/about/second-website.jpg), made in PowerPoint - 1999 - Removed: My first website. I crashed Dad’s computer with thousands of nested folders, and he had to reformat it - 1998 - Added: My first website, made in Notepad and uploaded with FTP - 1997 - Added: Internet access, which changed everything - 1996 - Added: A [family computer](https://sindresorhus.com/about/family-ibm-computer.jpg) with Windows 95, at seven - 1989 - Added: [Initial release](https://www.instagram.com/p/x1G0TboUAq/), in Norway } ## Some Things I Believe @Cards { - I’m all in on AI - It’s the biggest shift in how software gets made in my lifetime, and I use it every day - The bottleneck is no longer writing code. It’s taste, judgment, and knowing what to build - With AI, I can make, verify, and ship a fix faster than I can review a pull request for it - I still own the result. The design, the decisions, and the quality bar are mine - I make things for fun, and to solve my own problems - The easiest way to build a great app is to be your own customer - Enthusiasm is an input. It’s easier to do great work on things that excite you - Optimize for Monthly Happiness Percentage, not monthly recurring revenue. If some apps earn money, that’s a bonus - Focus is a feature - An app should do one thing well. Every “yes” makes the next “no” harder - Bloat doesn’t arrive in one release. It arrives one reasonable feature at a time - Focus lets me go deeper than the screenshot. A surface idea gets cloned in weeks, but taste, trust, and depth are hard to copy - [Small, focused modules](https://sindresorhus.com/blog/small-focused-modules) are LEGO bricks. Build big things out of small, finished pieces - One person can still make things that matter - From Apple’s [“Think Different”](https://en.wikipedia.org/wiki/Think_different) ad: “The people who are crazy enough to think they can change the world are the ones who do.” It’s at the bottom of every page on this site - The real cost of software is supporting it - Every feature is a promise to maintain it - Hacks break with the next OS update, and then they turn into support email - Free APIs go away, so I don’t depend on them - A platform feature that makes my package obsolete is a win. Node.js made seven of them obsolete - Native apps are better - Faster, smaller, and at home on the platform. Most of my apps are below 4 MB - Fit in, don’t stand out. The best app feels like it came with the system - I support only the latest macOS and iOS, and spend the time on making the apps better instead - Redesign only when it helps. Change for the sake of change creates work for everyone and value for no one - The people who use my apps deserve respect - No ads, no tracking, and no personal data - Pay once, own forever - Prices in whole dollars, not $4.99. I have no wish to manipulate my users. Small ethical choices compound - Behind every issue and support email is a real person. [Empathy and kindness](https://sindresorhus.com/blog/empathy-in-open-source) matter as much as code - Readability beats cleverness - Code is read far more often than it’s written - Silent on success, loud on failure } ## How I Make an App @Steps { 1. Write down every idea. Most of them are boring or bad, and that’s fine. It takes a lot of bad ideas to get to the good ones 1. Start with the idea, and learn what I need to make it 1. Design the app myself, and build it with AI as my tireless pair programmer 1. Ship it, and let reality decide. Some of my most popular apps are weekend projects, and some I spent months on went nowhere 1. Read every support email and reply myself 1. After every WWDC, go through all my apps to see how they can use the new features - But wait a year before trusting a brand-new API } ## What I Use {#uses} The things I use every day. @Cards { - 16-inch MacBook Pro - M4 Pro, with 48 GB of memory - iPhone 17 Pro, Apple Watch 7, and AirPods Pro 2 - Desk: my lap. External displays: none - I travel light: the laptop, the phone, some T-shirts, shorts, and boxers. That’s it - The apps in my Dock, for code - [Sublime Text](https://www.sublimetext.com), Xcode, [iTerm2](https://iterm2.com), [Tower](https://www.git-tower.com), [Hopper](https://www.hopperapp.com), and [VirtualBuddy](https://github.com/insidegui/VirtualBuddy). Sublime Text because it’s instant. Tower because Git history is easier to see than to remember - The apps in my Dock, for everything else - Safari, Notes, Reminders, and [ChatGPT](https://chatgpt.com) - [Claude Code](https://github.com/anthropics/claude-code) and [Codex](https://github.com/openai/codex) in the terminal - My own apps, every day - [Lungo](https://sindresorhus.com/lungo), [Dato](https://sindresorhus.com/dato), and [Supercharge](https://sindresorhus.com/supercharge) in the menu bar - [Dracula](https://draculatheme.com) and [JetBrains Mono](https://www.jetbrains.com/lp/mono/) in Sublime Text - Dark, of course, and tabs. Default dark theme in Xcode - Synthwave and chillstep while I code - Apple’s Passwords app, Gmail in Safari, and Google for search } ## Where My Code Ended Up Open source travels. I write a small package to solve my own problem, and years later, it turns up in places I never imagined. @Cards { - Three of the big AI coding agents started on [Ink](https://github.com/vadimdemedes/ink), which I maintain - [Claude Code](https://github.com/vadimdemedes/ink/blob/91eb50a53875623da26191f73f35658d3d9b91a5/readme.md?plain=1#L79) and [Gemini CLI](https://github.com/google-gemini/gemini-cli/blob/9656cff4aca74ebd158506c94927c70e9f8e46fb/packages/cli/package.json#L40-L66) draw their terminal UI with it, and [Codex](https://github.com/openai/codex/blob/73fe1381aa56f249b7c511fb033e7548c14d9100/codex-cli/package.json#L31-L49) did too, before the Rust rewrite - Apple ships my code - [The Books app](https://www.dropbox.com/scl/fi/iu88c6g9lxyh43n9hagte/IMG_3061-1792170168.PNG?rlkey=fpzxuemvzvbhafhzu4f483jvz&raw=1) on iOS includes `object-assign`, and [the Report a Problem website](https://reportaproblem.apple.com/static/en-us/acknowledgements.html) uses `query-string`. Both list me in their acknowledgements - The native ChatGPT app for Mac used my [KeyboardShortcuts](https://github.com/sindresorhus/KeyboardShortcuts) package - Until OpenAI rewrote the app in Electron - [Google’s Gemini dictation demo for Mac](https://github.com/google-gemini/jot-gemini-transcribe-macOS/blob/9976926959a6043eac01ffff4d914a7c7762ecfa/JotCore/Package.swift#L27) uses KeyboardShortcuts for push-to-talk - Hold a key, speak, and it types - [Got](https://github.com/sindresorhus/got/blob/eac0aa1294395a1bbe2a9825141fd320346aa6c1/readme.md?plain=1#L436) once powered Segment’s main backend API - And the RPC client for all their microservices. That’s a long journey for a package with a three-letter name - [Chalk](https://github.com/chalk/chalk) prints NASA’s green checkmarks - [Terra UI](https://github.com/nasa/terra-ui-components/blob/656f320a3245be325ce79f10f1826cf0710bbe3a/packages/create-terra-ui-app/bin/create-terra-ui-app.js#L29) uses it for its build messages, and Google’s [zx](https://github.com/google/zx/blob/d24bef75cc3ad7cabc51ae4db993978cbe3d2202/src/log.ts#L96-L105) colors its output with it - NASA, Wikipedia, and the BBC have unicorns in their code - My code-quality plugin, `eslint-plugin-unicorn`, is in NASA’s [Cumulus](https://github.com/nasa/cumulus/blob/a6d4bfcf7512d6bf4226198c54af7c7a30da05b3/package.json#L139) and [Open MCT](https://github.com/nasa/openmct/blob/8782f884ed3b31d853fe655ee07ed89fd27f7eef/package.json#L45), [Wikimedia’s ESLint config](https://github.com/wikimedia/eslint-config-wikimedia/blob/d6ff6d803c0adc240b57d275496e373037fc3f82/package.json#L75), and the BBC’s [TV player](https://github.com/bbc/bigscreen-player/blob/41a0be6d21316b0f95bc2fe83e6f975f29d5a497/package.json#L66). Somewhere between space science and encyclopedic seriousness sits a mythical horse } ## Some Fun Facts @Cards { - My name means “to sparkle” - [Sindre](https://snl.no/Sindre_-_mannsnamn) comes from Old Norse [Sindri](https://en.wikipedia.org/wiki/Sindri_(mythology)), a dwarf who forged a flying golden boar and a ring that made eight more every ninth night - My namesake made Thor’s hammer, so I was destined to make tools - It shipped with a bug: Loki, as a fly, bit the smith at the bellows, and the handle came out too short - The web and I were born the same year - Tim Berners-Lee [proposed it at CERN](https://home.cern/science/computing/birth-web) in 1989. My release notes were shorter - GIF is older than me - CompuServe made it in 1987, and my [Gifski](https://sindresorhus.com/gifski) app still helps it look good - [Velja](https://sindresorhus.com/velja) means “to choose” in [Nynorsk](https://en.wikipedia.org/wiki/Nynorsk) - A fitting name for an app that chooses your browser - [Imago](https://sindresorhus.com/imago) is Latin for “image” - In biology, it’s also the adult stage of an insect, like a butterfly - My package that does nothing gets thousands of downloads a week - [noop3](https://www.npmjs.com/package/noop3) is “Supreme nothingness”, now at version 1000.0.0 } ## Support My Work If my apps or my open-source work are useful to you, you can [sponsor me or donate](https://sindresorhus.com/donate), [buy one of my paid apps](https://sindresorhus.com/apps/paid), or leave a nice review on the App Store. [These people and companies](https://sindresorhus.com/supporters) already support me. Thank you! ## More - [Interview with Indie Dev Monday](https://indiedevmonday.com/issue-53) (2021) - [Interview with Between the Wires](https://www.freecodecamp.org/news/sindre-sorhus-8426c0ed785d) (2017) - [Answering Anything & Everything](https://github.com/sindresorhus/meta/files/10987101/Sindre.Sorhus.-.Answering.Anything.Everything.pdf), my old Q&A about anything people asked (PDF, 22 MB) --- # Affiliates URL: https://sindresorhus.com/apps/affiliates # Affiliates for my apps Earn money promoting some of my apps. Currently, only one: - [QuickGPT](https://sindresorhus.com/quickgpt): [Sign up as affiliate and earn 50% of each sale](https://sindresorhus.gumroad.com/affiliates) --- # Discounts URL: https://sindresorhus.com/apps/discounts # Discounts ## Power user bundle Get [Default Browser](https://sindresorhus.com/default-browser), [Shortcutie](https://sindresorhus.com/shortcutie), and [Supercharge](https://sindresorhus.com/supercharge) together for 28% off with the [Power User Bundle](https://sindresorhus.gumroad.com/l/power-user). ## Students and open source maintainers *Update: I’m pausing this for now. I get 20–30 emails daily about promo codes and need time to focus on work. I’ll resume sharing promo codes in the future. Thanks for understanding.* ~~If you’re a student or an open source maintainer, you can get any of my [paid apps](https://sindresorhus.com/apps/paid) for free. **Max one app per person.**~~ ~~[Reach out to me](mailto:sindresorhus@gmail.com?subject=Free%20promo%20code%20for%20%5Bapp%5D&body=Mention%20which%20paid%20apps%20you%20want) to request a free promo code.~~ ## Student App Centre Students can get [Supercharge](https://sindresorhus.com/supercharge) 50% off at [Student App Centre](https://www.studentappcentre.com/App/Supercharge). ## Educational institutions For my [apps on the App Store](https://apps.apple.com/developer/id328077650), educational institutions get a 50% discount when they purchase 20 or more copies of one of my macOS or iOS apps through [Apple School Manager](https://support.apple.com/guide/apple-school-manager/welcome/web). For my [apps on Gumroad](https://sindresorhus.gumroad.com), educational institutions get a 50% discount when they purchase 10 or more copies. Promo code: `LD13WY0` ## Reviewers and writers If you’re writing a review or article about one of my apps, I’m happy to provide a free license. [Contact me.](mailto:sindresorhus@gmail.com?subject=Review%20request%20-%20free%20license&body=%5BInclude%20a%20link%20to%20the%20website%20where%20the%20article%20will%20be%20published%5D) --- # Frequently Asked Questions URL: https://sindresorhus.com/apps/faq # Frequently Asked Questions *See the page of each app for app-specific FAQs.* ## Purchases {#purchases} ### How can I get a refund? {#refund} For apps purchased on the Apple App Store, you can [request a refund](https://support.apple.com/en-us/HT204084) from Apple. App developers have no control over the purchase and refund process. Please don’t contact me about it. For apps purchased on Gumroad (NOT on the App Store), refunds are generally not offered. You can [request a refund](mailto:sindresorhus@gmail.com?subject=Gumroad%20refund&body=Mention%20which%20app%20you%20want%20a%20refund%20for%20and%20your%20Gumroad%20account%20email) if you have a good reason (like duplicate purchase). But most purchases are final. However, I would appreciate it if you [reached out](https://sindresorhus.com/feedback) first. I may be able to resolve any problems you are having. ### Is there a free trial? {#free-trial} Some of my paid apps have a free trial. See the “Trial” section on the page of the app, like for [Dato](https://sindresorhus.com/dato#trial), [Supercharge](https://sindresorhus.com/supercharge#trial), [Velja](https://sindresorhus.com/velja#trial), [Scratchpad](https://sindresorhus.com/scratchpad#trial), and [Aiko](https://sindresorhus.com/aiko#trial). If the page of the app has no “Trial” section, the app does not have a trial of its own. Most trials are the full app, with a reminder to buy it every 12 hours and no automatic updates. All data and settings carry over if you buy the app. Apps that are on Setapp can also be tried for free for 7 days on Setapp. ### How many devices can I install an app on? {#device-limit} Apps purchased on the Apple App Store can be installed on up to 10 devices, with a maximum of 5 computers. [Learn more.](https://support.apple.com/en-us/HT204074) Apps purchased on Gumroad can be used by one user on unlimited computers. ### Can I use your paid apps with Family Sharing? {#family-sharing} Yes, all paid apps on the App Store support [Family Sharing](https://support.apple.com/en-us/108380) by default. Once one family member purchases the app, everyone in the family group can download it at no additional cost. Make sure Purchase Sharing is enabled in your family group settings. ### I previously bought the app on the App Store but it still says I need to pay {#restore-purchase} App Store purchases are tied to your Apple Account. Make sure you are signed in with the same Apple Account you used for the original purchase. You can verify this in App Store › tap your profile › Purchased. If the app does not appear there, you may be signed into a different account. Also check for any outstanding billing issues in your Apple Account settings, as unresolved payment problems can prevent access to previous purchases. ### How can I download an app I bought on Gumroad again? {#gumroad-download} You can download the app again from the Gumroad receipt email or from your Gumroad account. See [how to access a Gumroad purchase](https://gumroad.com/help/article/199-how-do-i-access-my-purchase). ### App Store won’t download or redownload an app of yours {#app-store-download-problem} Apple alone controls purchases, licensing, downloads, account state, and delivery on the App Store. Developers have zero access or influence. Some things you could try: - Restart device. - Sign out and in again to the App Store. Apple troubleshooting guide: - [macOS](https://support.apple.com/en-us/102331) - [iOS](https://support.apple.com/en-us/102632) ### How can I transfer an app bought on the Apple App Store to a different account? {#transfer-purchase} This is unfortunately [not possible](https://apple.stackexchange.com/a/444878). App developers have no control over the purchase process on the Apple App Store. ### Can I move between the App Store, Gumroad, and Setapp? {#transfer-between-stores} No. The App Store, Gumroad, and Setapp are completely separate platforms with no shared licensing. A purchase on one does not carry over to the others. ### How do I activate the Setapp version of an app? {#setapp-version} Install the app from the Setapp app, and open it from there. Your Setapp membership activates the app, so there is nothing to buy or restore in the app. The Setapp version is a separate app from the App Store or Gumroad version and the trial, and the settings do not carry over between them. If the app asks you to buy it, make sure you opened the Setapp version. For problems with your Setapp account or membership, [contact Setapp](https://support.setapp.com/hc/en-us/articles/4950254561052-How-to-contact-Setapp-team). ### Can your app be available on Setapp? {#setapp} Setapp curates apps based on demand, so if you’d like to see an app of mine on Setapp, [email them](https://support.setapp.com/hc/en-us/articles/4950254561052-How-to-contact-Setapp-team#:~:text=to%20your%20issue.-,Send%20an%20email,%3A%20support%40setapp.com.) and request its inclusion. ### Can I get an invoice? {#invoice} Apps purchased on: - [Apple App Store](https://apple.stackexchange.com/questions/425441/invoice-for-purchases-made-on-app-store) - [Gumroad](https://gumroad.com/help/article/194-i-need-an-invoice.html#How-to-generate-your-invoice-from-the-receipt-wpmBD) ### Do you provide any discounts? {#discounts} Yes. See the [discounts](https://sindresorhus.com/apps/discounts) page. ### What is Universal Purchase on the App Store? {#universal-purchase} An App Store feature that lets you buy an app once and get access to all its available versions across Apple platforms (iOS, macOS, watchOS, tvOS, and visionOS) using the same Apple Account. For example, if you buy a Universal Purchase app on your iPhone, you can download it on your Mac at no extra cost if a Mac version exists. All my apps on the App Store are Universal Purchase. ## Troubleshooting {#troubleshooting} ### I’m having a problem with your app {#app-problem} Here are some things you could try: - Restart your device. - Ensure you are on the latest version of the app. - Ensure you are on the latest operating system version. - Check the FAQ on the app’s page in case it’s already answered there. - If the app requires an internet connection, make sure you are online. Try disabling any VPN. - macOS: Close all other apps (including menu bar items) to make sure the problem is not caused by another app. - macOS: [Reset permissions.](https://sindresorhus.com/apps/faq#mac-reset-permissions) - [Reset the app.](https://sindresorhus.com/apps/faq#reset-app) For sync issues, [see below](https://sindresorhus.com/apps/faq#icloud-sync). If you have tried all of this, [contact me](https://sindresorhus.com/feedback). ### The app stopped working after a macOS update {#macos-update-broke-app} Ensure you are running the latest version of the app. I typically release updates around major macOS releases to ensure compatibility. You may also need to [re-grant permissions](https://sindresorhus.com/apps/faq#mac-reset-permissions) (Calendar, Full Disk Access, etc.) in System Settings, as macOS updates can reset/corrupt these. If the problem persists, try [resetting the app](https://sindresorhus.com/apps/faq#reset-app). Still not working? [Contact me](https://sindresorhus.com/feedback) with details. ### macOS says the app uses Rosetta and will stop working in a future version {#rosetta} All my maintained Mac apps run natively on Apple silicon. They do not need Rosetta, and they will continue to work when Apple removes Rosetta. If macOS shows the “Support Ending for Intel-based Apps” notification for one of my apps, or shows it in the “Intel-based Apps” list in System Settings, it is a macOS bug. You can ignore it. To check, select the app in Finder and press Command+I. “Kind” shows “Universal” or “Apple silicon”. If “Open using Rosetta” is checked there, uncheck it. ### I’m getting a “The application can’t be opened” error when trying to launch your app {#app-cant-be-opened} Make sure the app is in the “/Applications” folder, and then open it. If macOS blocks it, open “System Settings › Privacy & Security”, go to the “Security” section, click “Open Anyway”, and enter your login password. The button is only there for about an hour after you try to open the app. On macOS 15 and later, right-clicking the app and selecting “Open” no longer works for this. See [Apple’s guide to opening a blocked app](https://support.apple.com/guide/mac-help/open-a-mac-app-from-an-unknown-developer-mh40616/mac). If it still doesn’t work, the app may be quarantined, and the system is not showing the proper dialog. To fix this, open Terminal and run: ```sh xattr -d com.apple.quarantine -r /Applications/AppName.app ``` Replace `AppName` with the name of the app. [Learn more.](https://superuser.com/a/28400/6877) ### The app does not show up in the macOS menu bar {#app-not-showing-in-menu-bar} macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender/Ice if you have it installed. If you are on macOS 26 or later, make sure it’s not disabled in “System Settings › Menu Bar › Allow in the Menu Bar”. **This can happen even if you didn’t disable it due to a macOS bug.** Also try restarting your computer. ### The menu bar item looks blurry or is not dimmed on a secondary display {#menu-bar-secondary-display} macOS handles the replication of menu bar items onto secondary displays, so what you see there is drawn by the system, not by the app. Two things can look off, both outside the control of apps: - Text can look less sharp. This is simply the resolution of that display: a non-Retina display has far fewer pixels to draw the text with. Everything else on that screen is drawn at the same low resolution, but small text is where it shows the most. - macOS dims menu bar items on the display that is not active, making them semi-transparent so they blend into the menu bar. It incorrectly fails to do this for items that use rich text, so those stay fully opaque and stand out from everything around them. ### I have enabled “launch at login” but the app does not launch when I start my computer {#launch-at-login-not-working} When you enable that setting, the app simply tells macOS to launch it at login, so if it’s not working, it’s a problem with macOS or your system. Try disabling launch at login in the app, restart your computer, and then enable it again. As a workaround, you can manually add it: Open System Settings, go to “General › Login Items”, and click the “+” button, and choose the app. ### The macOS app randomly quits {#randomly-quits} If the app vanishes and there is no [crash report](https://sindresorhus.com/apps/faq#crash-report), it’s likely macOS terminated it to free disk space during a cache purge, or free up memory. It’s more noticeable with menu bar apps that run constantly. Keep 10–20 GB free and avoid “free purgeable space” tools (for example, CleanMyMac); they trigger the same system mechanism as a full disk. Also try restarting your computer. This is a [common problem](https://bitsplitting.org/2022/06/18/purgeable-mac-apps/) for macOS apps. ### Your app is using a lot of CPU {#high-cpu} If you notice high CPU usage for one of my apps in Activity Monitor, don’t be alarmed. [CPU usage numbers can be misleading](https://eclecticlight.co/2022/02/24/cpu-percentage-is-misleading-on-m1-macs/), especially on modern Apple silicon Macs. Here’s why: - The percentage shown is the total across all CPU cores. For example, on an 8-core Mac, 10% usage of a single core only represents about 1.5% of total capacity - Activity Monitor doesn’t distinguish between efficiency (E) and performance (P) cores - Many background tasks run on efficient low-power cores, minimizing battery impact - The CPU percentage updates every 5 seconds by default, so even brief spikes appear longer For a more accurate assessment, look at the “CPU Time” column in Activity Monitor instead of the CPU percentage. This shows the actual processor time used by the app. If you notice unusual battery drain, please [contact me](https://sindresorhus.com/feedback) as there might be an actual issue to investigate. ### iCloud syncing is not working {#icloud-sync} - Ensure iCloud sync is enabled in the app settings on all devices you wish to sync. - Ensure all devices are signed into the same iCloud account. - Ensure all devices are online. - Ensure your iCloud storage is not full. - Try restarting all devices. - Force a manual sync by making a small edit to the synced data on one device. - The initial sync may take a while. - Resolve any Apple Account or iCloud errors on your devices (e.g., sign-in prompts). - Ensure Low Power Mode is not enabled on the devices. It can cause iCloud to delay syncing. - Ensure you are on the latest operating system version and app version. - On iOS, ensure the app is not disabled in “Settings › Apple Account › iCloud › Apps Using iCloud”. - On macOS, ensure the app is not disabled in “System Settings › Apple Account › iCloud › Saved to iCloud” and “System Settings › Apple Account › iCloud › iCloud Drive › Apps syncing to iCloud Drive”. - If using a VPN, try disconnecting it, as some VPNs can interfere with iCloud syncing. - If it’s a work device, make sure there are no restrictions in place that prevent iCloud or iCloud Drive. - Check the [iCloud system status](https://www.apple.com/support/systemstatus/) to ensure the service is not experiencing issues. ### Keyboard shortcuts or text expansion suddenly stopped working {#secure-input-problem} If keyboard shortcuts or text expansion suddenly stops working, it’s likely because an app is using Secure Input, a macOS security feature that blocks other apps from reading keystrokes. While this is intended for sensitive contexts like password fields, apps sometimes fail to properly disable it. Common culprits are password managers like Bitwarden and 1Password, even when running in the background. Safari can also sometimes cause this. You can try: 1. Quit password managers and browsers. 1. Quit all apps. 1. Put the computer to sleep, then wake it up and log in again. 1. If nothing else works, restart your computer. 1. Use the “Get Apps Using Secure Input” action from [Shortcutie](https://sindresorhus.com/shortcutie) to identify the problematic app and quit it. If a diagnostic reports `loginwindow` as using Secure Input, this is a known macOS bug. Lock your screen with Control+Command+Q, then unlock it. Do not try to quit `loginwindow`. The issue often occurs when an app requests Secure Input while in the background, causing it to get “stuck” in secure mode. [Learn more ›](https://espanso.org/docs/troubleshooting/secure-input/) ### The widget does not show up, is stuck, or is missing {#widget-not-showing} The widget system in iOS and macOS is quite buggy and can fail a lot. This is not a problem with the app and out of my control. Try this: - Open the app once, and then try to add the widget again. - Restart your device. - Remove the widget and add it again. - Change the language of the device to something else and then back. - iOS: Offload the app and reinstall it. Open the Settings app, go to “General › iPhone/iPad Storage”, tap the app, tap “Offload App”, and then tap “Reinstall App”. This keeps the data of the app. ### How can I install one of your iOS apps on an older version of iOS? {#older-ios-version} If the current version of the app requires a newer iOS version than your device supports, the App Store can offer the last compatible version. When you tap “Get” or the download button, you should see a prompt asking if you want to download an older version of the app. Tap “Download” to install it. This only works if the app has been previously downloaded with your Apple Account (even for free apps). If you have not previously downloaded the app, first download it on a device running a supported iOS version, which adds it to your purchase history. Then, on your older device, go to App Store › tap your profile › Purchased, find the app, and download it from there. [Learn more ›](https://apple.stackexchange.com/questions/195074/how-do-i-install-an-older-version-of-an-app-on-an-iphone) ### How can I reset all permissions for your Mac app? {#mac-reset-permissions} *(This is only necessary if the app asked for any permissions the first time you launched it)* **The simple way** Select the app in [App Buddy](https://sindresorhus.com/app-buddy) and click “Reset Permissions”. *If this is for Supercharge, you can instead click its menu bar item, and in the menu, click “… › Debug › Reset Permissions”.* **The manual way** First, quit the app. Copy the following, open the Terminal app, paste it into the Terminal window, replace `` with the name of the app, and then press the Return key: ```sh osascript -e 'id of app ""' ``` Example: ```sh osascript -e 'id of app "Dato"' ``` You now have the app’s identifier. Next, copy the following, and paste it into the Terminal window, replace `` with the app’s identifier, and then press the Return key: ```sh tccutil reset All ``` Example: ```sh tccutil reset All com.sindresorhus.Dato ``` You can now launch the app again. ### How can I delete all settings and data to start over in one of your apps? {#reset-app} macOS: Make sure the app is not running (you can force-quit it from the Activity Monitor app) and then press Shift+Control+Option+Command while launching the app. iOS: Open the Settings app, go to “General › iPhone/iPad Storage”, tap the app in the list, tap “Delete App”, then go to the App Store and install the app again. ### How can I uninstall your app? {#uninstall-app} macOS: Ensure the app is not running. Open Finder, go to the “Go” menu, and select “Applications”. Find the app and drag it into the trash. iOS: Tap and hold the app on the Home Screen and select “Remove App”. *If you’re uninstalling due to issues, please [contact me](https://sindresorhus.com/feedback) first; I resolve problems quickly.* ## Bug Reports {#bug-reports} ### How can I report a bug or suggest a feature? {#report-bug} Use the feedback button in the app or the support link on the app’s page. I prioritize bug fixes and consider feature suggestions that align with the app’s vision and user demand. ### How do you prioritize bug fixes? {#prioritize-bugs} User-reported bugs are prioritized based on their impact on the app’s functionality and the number of users affected. I aim to fix every bug users report. ### How can I send you debug info for one of your apps? {#debug-info} macOS: Make sure the app is not running (you can force-quit it from the Activity Monitor app) and then press Shift+Control+Option while launching the app. iOS: In the app, tap the “Share App” button (usually found in settings), triple tap on the QR code, and then tap “Send Debug Info to Developer”. ### How can I send you a crash report for one of your apps? {#crash-report} **macOS - simple** Select the app in [App Buddy](https://sindresorhus.com/app-buddy) and click “Copy to Downloads” in the “Crash Reports” section. **macOS - manual** - Open Finder - Select `Go to Folder…` from the `Go` menu - Enter: `~/Library/Logs/DiagnosticReports` - In the resulting list, select all files that start with the app name, ZIP them, and [send me](https://sindresorhus.com/feedback) **iOS** - In the Settings app, go to “Privacy & Security › Analytics & Improvements › Analytics Data” - Tap the first item that starts with the app name - If no app report exists, send the most recent `JetsamEvent`, which shows system memory issues. - Tap the share button, tap a mail app, and send it to `sindresorhus@gmail.com` ### How can I send you a **spindump** for one of your Mac apps? {#spindump} - Make sure the app in question is running. - Open the Activity Monitor app. - In the search bar in the toolbar, write the name of the app. - Select the app. - In the “View” menu (in the menu bar), click “Run Spindump”. - Click the “Save” button. - Send me the file. ### How can I send you a **process sample** for one of your Mac apps? {#sample-process} **The simple way** Select the app in [App Buddy](https://sindresorhus.com/app-buddy) and click “Sample Process”. **The manual way** - Make sure the app in question is running. - Open the Activity Monitor app. - In the search bar in the toolbar, write the name of the app. - Select the app. - In the “View” menu (in the menu bar), click “Sample Process”. - Click the “Save” button. - Send me the file. ## Advanced {#advanced} ### How can I export, import, sync, transfer, or back up the settings for your Mac app? {#export-settings} You can do it with my [App Buddy](https://sindresorhus.com/app-buddy) app. If you prefer using the command-line, [see this guide.](https://github.com/sindresorhus/guides/blob/main/backup-app-settings.md#command-line) ### Do your apps support Shortcuts? {#shortcuts} Yes, most of my apps have Shortcuts actions. You can find them in the Shortcuts app by searching for the app name when adding an action. ### Can you add AppleScript support to your apps? {#applescript} No. AppleScript is a dying technology that Apple barely cares about anymore. [Shortcuts](https://support.apple.com/en-gb/guide/shortcuts/welcome/ios) is the modern replacement and where Apple is investing its automation efforts. Most of my apps support Shortcuts. ### What are distributed notifications? {#distributed-notifications} [Distributed notifications](https://developer.apple.com/documentation/foundation/distributednotificationcenter) is a communication mechanism on macOS that allows apps to send invisible system-wide signals that other apps can listen to. When one app sends a notification, another app can wait for it and then do something. For example, [Dato](https://sindresorhus.com/dato) sends a distributed notification when you join a video call, which other apps can listen for and do something when it happens. And [Default Browser](https://sindresorhus.com/default-browser) sends a distributed notification when the default browser is changed. To listen to such notifications, you could use the “Wait for Distributed Notification” action in the [Actions](https://sindresorhus.com/actions) app or use [BetterTouchTool](https://folivora.ai). ### How do I find the bundle identifier of a Mac app? {#find-bundle-identifier} To get the bundle identifier of an app, run the following in the Terminal app: ```sh osascript -e 'id of app "AppName"' ``` Replace `AppName` with the name of the app. For my apps, you can also find it in [App Buddy](https://sindresorhus.com/app-buddy). ### What is a bundle identifier? {#bundle-identifier} A bundle identifier (or bundle ID) uniquely identifies an app in Apple’s ecosystem, using a reverse-domain format like `com.companyname.appname`. For example, `com.sindresorhus.Dato` for [Dato](https://sindresorhus.com/dato). ### What is the macOS app sandbox? {#macos-sandbox} The macOS app sandbox is like putting each app in a fenced yard. It keeps the app from wandering off and messing with other apps or your system, which makes your Mac safer. However, the fence is very strict. It can stop apps from doing creative or powerful things, even when you want them to. All apps on the Mac App Store must be sandboxed, which means some advanced features or workflows might not be possible. ## About the Apps {#about-the-apps} ### Do your apps collect any personal data? {#privacy} My apps prioritize user privacy and do not collect any personal data. ### Are your apps native? {#native-apps} Yes, all my apps are native. They are built using Swift and SwiftUI and are designed to provide the best performance and integration with the operating systems. I put a lot of effort into adhering to Apple’s [Human Interface Guidelines](https://developer.apple.com/design/human-interface-guidelines). ### Are your apps “vibe coded”? {#vibe-coded} No. I have been developing Mac apps for over a decade, long before AI existed. Every app is intentionally designed and hand-crafted. I do use AI as a tool for brainstorming, planning, catching bugs, writing tests, and generating elements for app icons, but the architecture, code, and user experience are all my own work. ### Why are most of your apps free? {#free-apps} I love making apps and I want them to be available to as many people as possible. I don’t care much about money and I earn enough on my paid apps. ### Why should I trust you? {#trust} Free apps often raise doubts about privacy and intentions. I don’t sell your data, you’re not the product, and there are no ads. I make apps because I enjoy it. Over 6 million users trust my apps, and tens of thousands of developers rely on [my open source code](https://github.com/sindresorhus). Don’t just take my word for it; check the reviews on the App Store. Feel free to [contact me](https://sindresorhus.com/contact) if you have any questions. ### What’s your policy on ads in your apps? {#no-ads} I hate ads. None of my apps have ads. ### Do you actively maintain all your apps? {#active-maintenance} Yes, I actively maintain all my apps to ensure they remain awesome and bug free. Every year, I make sure they take advantage of Apple’s latest technologies. ### The app hasn’t been updated in a while, is it still maintained? {#not-updated} Yes, if an app has not been updated for months, it’s still actively maintained. A lack of recent updates indicates that the app has reached a mature and stable state. ### Why do you only support the latest macOS/iOS version? {#latest-os-only} I make apps for fun and supporting older operating system versions is simply no fun. It adds a lot of overhead with having to test each update on the older versions, work around bugs Apple will never fix, etc. As a compromise, I provide [older versions](https://sindresorhus.com/apps/older-versions) of my apps for older operating system versions. ### Why do you create multiple mini menu bar apps instead of one comprehensive “menu bar app”? {#multiple-apps} - **Focus:** Easier to make a high-quality app when it’s focused on one thing. - **Marketing:** Challenging to market an app that does too many different things. - **Customization:** Users can install only what they need. - **Isolation:** Issues in one app don’t affect others. - **Satisfaction:** I like the satisfaction of completing an app. ### Can I contribute localizations to your apps? {#localize} No, I don’t plan to localize / translate my apps. Localization adds complexity and maintenance demands that detract from my focus on app quality and performance. ### Can you make your apps available on Homebrew? {#homebrew} For App Store apps, unfortunately not. Supporting Homebrew requires distributing apps outside the App Store, and that involves significant overhead: hosting, auto-updating, and dual publishing. The demand simply doesn’t justify these efforts. For non-App Store apps, anyone can add to Homebrew. Feel free to [add one of my apps](https://docs.brew.sh/Adding-Software-to-Homebrew). I personally don’t use Homebrew for apps, so it’s not something I plan to do. ### You are doing a lot of open source, why are only some of your apps open source? {#why-not-oss} I open source [some of my apps](https://github.com/search?q=user%3Asindresorhus+language%3Aswift+topic%3Aapp+archived%3Afalse), but not all, for a few key reasons. First, I use specialized tools (internal framework) to speed up app development, which are not suitable for sharing. Additionally, past experiences with open sourcing apps have led to clones of my apps appearing on the App Store, which is problematic. Also, community contributions, though well-intentioned, often don’t match the high quality standards I set for my apps. As a compromise, I tend to open source the [reusable building blocks](https://github.com/search?q=user%3Asindresorhus+topic%3Aswift-package+archived%3Afalse), allowing community involvement while maintaining the quality and uniqueness of my apps. ### Can you support non-Apple platforms? {#non-apple} No, my expertise is exclusively in macOS, iOS, watchOS, and visionOS. Focus is key to high-quality apps. ### Who makes your app icons? {#app-icons} I make them myself in Sketch, sometimes using AI as a starting point. ### How can I support your work? {#support-work} Rate and review my apps on the App Store. Your ratings and reviews greatly aid in increasing the apps’ visibility and discoverability, helping more users find them. You can also rate my apps on Gumroad. ### What’s the best way to learn about new apps? {#new-apps} Subscribe to my [“new apps” RSS feed](https://sindresorhus.com/feeds) and follow me on [X (Twitter)](https://x.com/sindresorhus), [Mastodon](https://mastodon.social/@sindresorhus), or [Bluesky](https://bsky.app/profile/sindresorhus.com). ### Can I hire you to build me an app? {#hire} I am not available for hire. ### Can I acquire your app? {#acquire} No. I make apps because I enjoy it. Your money is of no interest to me. ### My question is not answered here {#more-questions} [Ask me.](https://sindresorhus.com/contact) *You could also try to [ask my AI bot](https://chatgpt.com/g/g-df0ZoBF9N-sindregpt).* --- # Terms of Use URL: https://sindresorhus.com/apps/terms # Apps — Terms of Use Please take a moment to familiarize yourself with the following guidelines. They are designed to ensure a beneficial experience for us both. ## General By using my apps, you agree to these terms and any subsequent changes. I may update them without direct notice. Always check the latest terms here. ## Permitted Use You may use my apps without restrictions for their intended purposes. However, malicious usage is strictly prohibited. ## Intellectual Property All content, features, and functionality of the apps are owned by me and protected by intellectual property laws. You may not reproduce, modify, distribute, or exploit any part of the apps without explicit permission. ## App Store If you get my apps from the App Store, [Apple’s EULA](https://www.apple.com/legal/internet-services/itunes/dev/stdeula/) applies. ## Software Integrity Perfection is the goal, but occasional bugs may appear. I deeply value the trust you place in my apps, yet I cannot promise complete flawlessness. For your peace of mind, regular backups are highly recommended. ## Accessibility (ADA Compliance) I am committed to making my apps accessible to everyone, including individuals with disabilities. If you encounter any accessibility issues while using my website or apps, please [contact me](https://sindresorhus.com/feedback) to report them, and I will do my best to address and resolve the concerns promptly. Accessibility improvements are continuously being made to ensure a user-friendly experience for all. ## Liability I disclaim all liability arising from the use or misuse of my apps. Users assume all risks and consequences tied to their actions based on the apps’ functionality or content. ## Indemnification You agree to indemnify me against any claims, liabilities, damages, or expenses arising from your use of the apps or breach of these terms. ## Refunds For apps purchased on the Apple App Store, you can [request a refund](https://support.apple.com/en-us/HT204084). However, I would appreciate if you [reached out](https://sindresorhus.com/feedback) first. I may be able to resolve any problems you are having. ## Support I aim to address all support and related queries within a week. There might be occasional delays, and I appreciate your understanding. --- Last Update: 2024-09-13 --- # Donate URL: https://sindresorhus.com/donate # Donate ❤️ I’m a full-time open-sourcerer and my work is funded by the community. [Read more about me and what I do.](https://github.com/sponsors/sindresorhus) If you or your company are using any of my projects, consider supporting me so I can continue [my open source work](https://github.com/sindresorhus). ### Monthly donations - [GitHub Sponsors](https://github.com/sponsors/sindresorhus) - [Open Collective](https://opencollective.com/sindresorhus) ### One-time donations - [BuyMeACoffee.com](https://www.buymeacoffee.com/sindresorhus) - [PayPal](https://www.paypal.me/sindresorhus) - [Open Collective](https://opencollective.com/sindresorhus) - [Alipay](https://sindresorhus.com/assets/alipay-qrcode.jpg) *(China)* - BTC: `3FA1Wpk1SFFCZyQRYufyhLBCcdd9MRCHKf` - ETH: `0x44A3A86d8A2631aB82C1368889E75Df4E1c07068` ### Supporters Thank you to [everyone who supports my work](https://sindresorhus.com/supporters). ### Buy my apps You can also support me by [buying my apps](https://sindresorhus.com/apps/paid). A nice review on the App Store is also a good way to support my work. --- # Now URL: https://sindresorhus.com/now --- # Supporters URL: https://sindresorhus.com/supporters # Thanks! 🙌 I’m truly grateful to all the wonderful humans and companies supporting my open source work on [GitHub Sponsors](https://github.com/sponsors/sindresorhus) and [Open Collective](https://opencollective.com/sindresorhus). ## 🦄 Sponsor $1000/month - [GitHub](https://github.com) - [Depot](https://depot.dev) ## Silver sponsor $100/month - [ESLint](https://eslint.org) - [Jared Wray](https://github.com/jaredwray) - [CodeRabbit](https://coderabbit.ai) - [Fame Helsinki](https://www.fame.fi) - [FetchFox](https://fetchfox.ai?ref=sindre) - [nitric](https://nitric.io) - [KRUU](https://kruu.com) ## Top supporter $50/month - [Jacob Gillespie](https://github.com/jacobwgillespie) - [Passbolt](https://github.com/passbolt) - [Checkly](https://github.com/checkly) - [Stefan Thomas](https://www.patreon.com/user/creators?u=15361260) - [n8n](https://github.com/n8nio) See all supporters on [GitHub Sponsors](https://github.com/sponsors/sindresorhus). ## Become a supporter [Support my open source work 🙌](https://sindresorhus.com/donate) --- # Tiny Apps URL: https://sindresorhus.com/tiny-apps # Tiny Apps Tiny but useful macOS utilities. These are generally not up to the quality of my [main apps](https://sindresorhus.com/apps). @TinyApp(title: "Services Debug", icon: "/apps/services-debug/icon.png", download: "https://www.dropbox.com/scl/fi/c2741txqdrma549ohp743/Services-Debug-1.2.0-1761031297.zip?rlkey=0b67gsrkcl7ef176fbfxyz8bx&raw=1", requirement: "Requires macOS 15 or later") { Check what content an app provides to services in the “Services” menu. This can be useful when developing support for [system services](https://www.computerworld.com/article/2476298/os-x-a-quick-guide-to-services-on-your-mac.html) in your macOS app. } @TinyApp(title: "Copy URL", icon: "/apps/copy-url/icon.png", download: "https://github.com/sindresorhus/Copy-URL/releases/latest", source: "https://github.com/sindresorhus/Copy-URL", requirement: "Requires macOS 13 or later") { Adds copy functionality to browser picker apps. } @TinyApp(title: "Safari Private", icon: "/apps/safari-private/icon.png", download: "https://github.com/sindresorhus/Safari-Private/releases/latest", source: "https://github.com/sindresorhus/Safari-Private", requirement: "Requires macOS 13 or later") { Open the given URL in a private Safari window. } --- # This Website Is Now Made in Swift URL: https://sindresorhus.com/blog/swift-website This website used to be made with Astro. Now every page, component, and style is written in Swift, the same language as my apps, and it feels a lot like SwiftUI. The browser still gets plain HTML and CSS, with a little JavaScript. The difference is how I make it, and I enjoy working on it a lot more. ## Why Swift? I write Swift all day, and I love it. I no longer have to switch languages and tools when I go from an app to the website. But the main reason is the compiler. A website is lots of small things that need to agree: links, class names, styles, scripts, and the data of more than 60 apps. In a typical web stack, they only meet in the browser, and a mistake becomes a broken page. Here, most of them meet in the compiler. Rename a page, and every link to it in the code stops compiling. ## It looks like SwiftUI A component is a struct with a `body`: ```swift struct BackLink: HTML { let app: App var body: some HTML { a(.href(app.path)) { "Back to \(app.title)" } .style { $0 .secondaryText() .fontWeight(.medium) .hoverColor(.primaryText) } } } ``` The HTML comes from [Elementary](https://github.com/elementary-swift/elementary). The rest (styles, routes, and content) is my own small framework on top. The syntax highlighting you see here is Swift too. The build runs the code through Swift's own parser, [swift-syntax](https://github.com/swiftlang/swift-syntax), and colors each token, so the colors are right, and there's no JavaScript for it. ## Styles are modifiers A style goes on the element, like a modifier in SwiftUI. The `.style { … }` above becomes a class like `back-link-1x2y3z4`, from the file name and a hash of the style. It can't leak to other elements, and when I inspect the HTML, I know which file it came from. Shared looks and variants are enum cases, so they autocomplete, and a typo doesn't compile. Here is a short version of the badge component: ```swift struct Badge: HTML { enum Kind: StyleSet { case standard case new var style: Style { switch self { case .standard: Style().background(.gray(200), dark: .gray(800)) case .new: Style().background(.teal(100), dark: .teal(900)) } } } enum Styles: StyleSet { case root var style: Style { Style() .display(.inlineBlock) .padding(.horizontal, .rootEm(0.375)) .cornerRadius(.rootEm(0.5)) .bold() } } let title: String var kind = Kind.standard var body: some HTML { span { title } .style(Styles.root, kind) } } ``` Using it is just like using a SwiftUI view: ```swift Badge(title: "New", kind: .new) ``` Each page only gets the CSS of the components it shows. Under the hood, it's modern CSS: cascade layers, `light-dark()`, relative colors, scroll-driven animations, and container units. I don't use a preprocessor or Tailwind. ## Typed CSS variables CSS custom properties are just strings. Here, they have a type: ```swift static let color = StyleVariable("--overflow-menu-color") // The menu uses it, with a default. .color(OverflowMenu.color.value(default: .link)) // A parent sets it. .setting(OverflowMenu.color, to: .bodyText) ``` Setting it to a length doesn't compile. With `RegisteredProperty`, the page also gets the `@property` rule, so the browser can animate it, like the gradient on the home page: ```swift static let gradientStart = RegisteredProperty("--gradient-start", syntax: "", initialValue: .black) ``` ## Responsive and accessible Breakpoints and media queries are typed, and media queries combine with `&&`: ```swift Style() .grid(columns: 2) .from(.tablet) { $0.gridColumns(3) } .media(.coarsePointer) { $0.padding(.rootEm(0.75)) } .media(.hover && .finePointer && .allowsMotion) { $0.hover { $0.setting(titleLight, to: .percent(35)) } } ``` The last one is the light that follows the pointer over the title of the apps page. It's only there with a mouse or a trackpad, and only when motion is allowed. Colors are semantic, like `.secondaryText`. Each has a light and a dark value, and the colors of text, links, and lines get a stronger value when you ask for more contrast in the system settings. Components get all of that for free. ## Links Links work like in SwiftUI. From the 404 page: ```swift Link("Back to Homepage", destination: .path(.root)) .buttonStyle(.primary) Link("Browse Apps", destination: .path(.apps)) .buttonStyle(.secondary) ``` Pages are static members, so `.apps` autocompletes, and a page that doesn't exist doesn't compile. After the build, every link and ID in the generated HTML is checked too. ## Scripts A component with behavior is a custom element. Swift renders the HTML, and the script is the class of the element. A small script lives right in the Swift file, and a larger one in a `.js` file next to it. A script only touches its own element, so it can't break something else on the page. There's no framework or bundler. ## Small and fast A blog post is about 14 KB compressed: 6.6 KB of HTML, 5.4 KB of CSS, and 1.8 KB of JavaScript. An app page, like the one for Lungo, is about 29 KB before the screenshots. Besides a small shared stylesheet, a page only gets the styles and scripts of its own components, there are no web fonts, and images below the fold load lazily. In Chrome, resting the pointer on a link loads the page in the background, so it often opens instantly. ## Content as data Each app is a Markdown file with typed metadata: ```swift @Frontmatter struct Frontmatter { @NonEmpty var title: String @NonEmpty var subtitle: String @CalendarDay var publicationDate: Date var platforms: [Platform] var isPaid = false } ``` [`@Frontmatter`](https://github.com/sindresorhus/sindresorhus.github.com/blob/main/Sources/SiteKitMacros/FrontmatterMacro.swift) is a Swift macro that writes the decoder at compile time. `@NonEmpty` rejects an empty value, and `@CalendarDay` turns `'2017-07-26'` into a `Date` and rejects days like `'2026-02-30'`. A mistake, like an unknown platform or a misspelled key, is an error with the file and the line, sometimes with a “Did you mean” suggestion. The build also gets the ratings, prices, and reviews of each app from the App Store, and the numbers on the [about page](https://sindresorhus.com/about#stats) and the [now page](https://sindresorhus.com/now) from GitHub and npm, like the stars and the weekly downloads. The responses are cached, so a build usually costs nothing, and a request that fails only leaves its number out. `swift run website check` catches what the compiler can't, like spelling mistakes, or a page that says an app needs macOS 14 when the App Store says macOS 15. ## Delight Warnings fail the build, and a few hundred tests check what the types can't, like that every class has a CSS rule. So I can make big changes without worrying. Everything autocompletes, and a refactor is a rename. The code reads like SwiftUI, with no class soup and no selectors to keep in my head. A component keeps its markup, styles, and script in one place, and when I delete it, its CSS and JavaScript go with it. And `swift run website serve` reloads the page when I save. Working on the website is now as much fun as working on the apps. The [source code](https://github.com/sindresorhus/sindresorhus.github.com) is open. ## One more thing The best stress test of all this is [my home page, 1999 edition](https://sindresorhus.com/1999): the site reimagined as a personal home page from back then, with a guestbook, an alien game, a virtual unicorn, and a MIDI jukebox. It has 81 custom elements, made with the same components and styles as the rest of the site. Go sign the guestbook. --- # The Micro-Benchmark Fallacy URL: https://sindresorhus.com/blog/micro-benchmark-fallacy Micro-benchmarks, while seemingly insightful, often mislead developers by presenting a skewed view of performance. They isolate small fragments of code, amplifying their significance in ways that don’t reflect real-world scenarios. ## Lack of Real-World Context Micro-benchmarks strip away the complexities of actual apps. A function may perform well in isolation, but its impact on overall system performance can be negligible. ## Artificial Testing Conditions These benchmarks typically run under ideal circumstances, failing to account for real-world factors like I/O operations, network latency, and user interactions that significantly affect performance. ## Misguided Optimization Focus Obsessing over micro-optimizations often yields diminishing returns. It’s more productive to focus on optimizing critical paths and bottlenecks that genuinely impact user experience. ## Overlooking Concurrency and Parallelism Apps generally rely heavily on concurrent and parallel execution. Micro-benchmarks typically test single-threaded performance, which may not accurately represent how code behaves in a multi-threaded environment. ## Neglecting Startup and Initialization Costs Some operations have significant startup or initialization costs that are amortized over time in long-running apps. Micro-benchmarks may overemphasize these costs if they don’t run long enough, leading to misguided optimization efforts. ## JIT and Caching Complications Modern languages use Just-In-Time (JIT) compilation and caching to dynamically optimize performance. Micro-benchmarks include warm-up phases to account for this, but often miss the full impact. A function in a micro-benchmark might run faster or slower when integrated with other code due to changes in execution paths, resource contention, or different inlining decisions. ## Misleading Marketing Be skeptical of projects that boast micro-benchmark results. These figures are often cherry-picked and rarely reflect real-world performance. A prime example is when frameworks use these benchmarks to promote their performance, showcasing isolated scenarios where they shine. However, these results quickly lose relevance once real-world factors like database I/O come into play. Such benchmarks often distract from more important considerations when evaluating a framework. ## The Bottom Line While micro-benchmarks can provide some insights, they shouldn’t be the primary basis for performance optimization decisions. Instead, focus on comprehensive profiling of your app under realistic conditions to identify and address genuine performance bottlenecks. --- # Goodbye, Node.js Buffer URL: https://sindresorhus.com/blog/goodbye-nodejs-buffer The [`Buffer`](https://nodejs.org/api/buffer.html) type has been the cornerstone for binary data handling in Node.js since the beginning. However, these days we have [`Uint8Array`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array), which is a native JavaScript type and works cross-platform. While `Buffer` is an instance of `Uint8Array`, it introduces numerous methods that are not available in other JavaScript environments. Consequently, code leveraging Buffer-specific methods needs polyfilling, preventing many valuable packages from being browser-compatible. `Buffer` also comes with additional caveats. While [`Uint8Array#slice()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/slice) creates an immutable copy, [`Buffer#slice()`](https://nodejs.org/api/buffer.html#bufslicestart-end) creates a mutable segment linked to the original Buffer, resulting in possible unpredictable behavior. The problem is not the behavior of the `Buffer#slice()` method, but the fact that `Buffer` is a subclass of `Uint8Array` and completely changes the behavior of an inherited method. Instead of `Buffer#slice()`, use `Uint8Array#subarray()` or `Buffer#subarray()`. Furthermore, [buffers expose private information](https://github.com/nodejs/node/issues/41588#issuecomment-1016269584) through global variables, a potential security risk. It is time to move on. ## The Plan I intend to move [all my packages](https://github.com/search?q=owner%3Asindresorhus+%22node%3Abuffer%22&type=code) from using `Buffer` to `Uint8Array`. If you are a maintainer of a JavaScript package, I encourage you to do the same. `Buffer` will never be removed, and probably never even deprecated, but at least the community can slowly move away from it. My hope is that the Node.js team will at least start discouraging the use of `Buffer`. ## How First, familiarize yourself with the [subtle incompatibilities](https://nodejs.org/api/buffer.html#buffers-and-typedarrays) between `Uint8Array` and `Buffer`. I have made the [`uint8array-extras` package](https://github.com/sindresorhus/uint8array-extras) to make the transition easier. Pull requests are welcome for additional utilities. If your code accepts a `Buffer` and doesn’t use any `Buffer`-specific methods, you can simply update your docs and types to `Uint8Array`. Changing the input type from `Buffer` to `Uint8Array` is a non-breaking change since `Buffer` is an instance of `Uint8Array`. Changing the return type from `Buffer` to `Uint8Array` is a breaking change, because consumers may use `Buffer`-specific methods. If you absolutely need to convert a `Uint8Array` to a `Buffer`, you can use `Buffer.from(uint8Array)` (copies the data) or `Buffer.from(uint8Array.buffer, uint8Array.byteOffset, uint8Array.byteLength)` (does not copy). However, there is usually a better way. The primary transition steps are: - Remove all `import {Buffer} from 'node:buffer'` imports. - Remove all occurrences of the `Buffer` global. - Stop using `Buffer`-specific methods. - Replace `Buffer` reading/writing methods, like [`Buffer#readInt32BE()`](https://nodejs.org/api/buffer.html#bufreadint32beoffset), with [`DataView`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView). ## Questions #### Why did `Buffer` exist in the first place? `Buffer` was created long before `Uint8Array` existed. #### How can I convert to and from Base64 with `Uint8Array`? You can use my [`uint8array-extras` package](https://github.com/sindresorhus/uint8array-extras) for now. It will most likely eventually be [supported natively](https://github.com/tc39/proposal-arraybuffer-base64/issues) in JavaScript. #### How do I handle Node.js APIs that return a `Buffer`, like the `fs` methods? Since `Buffer` is a subclass of `Uint8Array`, you can just treat it like a `Uint8Array`. Just make sure you don’t use `.slice()` (which differs in behavior) or any Buffer-specific methods. ## Examples #### JavaScript ```diff +import {stringToBase64} from 'uint8array-extras'; -Buffer.from(string).toString('base64'); +stringToBase64(string); ``` ```diff +import {uint8ArrayToHex} from 'uint8array-extras'; -buffer.toString('hex'); +uint8ArrayToHex(uint8Array); ``` ```diff const bytes = getBytes(); +const view = new DataView(bytes.buffer); -const value = bytes.readInt32BE(1); +const value = view.getInt32(1); ``` ```diff import crypto from 'node:crypto'; -import {Buffer} from 'node:buffer'; +import {isUint8Array} from 'uint8array-extras'; export default function hash(data) { - if (!(typeof data === 'string' || Buffer.isBuffer(data))) { + if (!(typeof data === 'string' || isUint8Array(data))) { throw new TypeError('Incorrect type.'); } return crypto.createHash('md5').update(data).digest('hex'); } ``` Most Node.js APIs accept `Uint8Array` too, so no extra work was required. Ideally, this code should also transition to [Web Crypto](https://nodejs.org/api/webcrypto.html), but that’s not relevant to this example. ##### TypeScript ```diff -import {Buffer} from 'node:buffer'; -export function getSize(input: string | Buffer): number { … } +export function getSize(input: string | Uint8Array): number { … } ``` ## Enforcement I recommend enforcing `Uint8Array` over `Buffer` with linting. Add this to your ESLint config: ```js { 'no-restricted-globals': [ 'error', { name: 'Buffer', message: 'Use Uint8Array instead.' } ], 'no-restricted-imports': [ 'error', { name: 'buffer', message: 'Use Uint8Array instead.' }, { name: 'node:buffer', message: 'Use Uint8Array instead.' } ] } ``` And if you use TypeScript, add this: ```js { '@typescript-eslint/ban-types': [ 'error', { types: { Buffer: { message: 'Use Uint8Array instead.', suggest: [ 'Uint8Array' ] } } } ] } ``` If you use [XO](https://github.com/xojs/xo), it comes with this config by default. ## How Can I Help? [Voice your support](https://github.com/nodejs/node/issues/41588) for Node.js using `Uint8Array` for new APIs. Help me move [my packages](https://github.com/search?q=owner%3Asindresorhus+%22node%3Abuffer%22&type=code) to `Uint8Array`. Pick one and give it a go. Help us make a [lint rule](https://github.com/sindresorhus/eslint-plugin-unicorn/issues/1808) to prevent the use of `Buffer` methods. ## Future `Uint8Array` (or rather `TypedArray`) need more utility methods! For example, there is currently no good built-in way to convert a `Uint8Array` to Base64 or Hex. Although, it looks like this is [most likely coming](https://github.com/tc39/proposal-arraybuffer-base64). Consider proposing missing bits to [TC39](https://github.com/tc39/proposals). ## The End Let’s make the JavaScript package ecosystem more cross-platform. Thanks for reading. [Discuss](https://github.com/sindresorhus/meta/discussions/22) --- # Empathy in Open Source URL: https://sindresorhus.com/blog/empathy-in-open-source The success of any open source project relies on the collaboration and participation of individuals from all over the world. In order to foster a healthy and productive open source community, it’s crucial to prioritize empathy and kindness towards one another. Empathy allows us to understand and relate to the experiences of others. It’s important to recognize that not everyone has the same level of expertise or access to resources, and that’s okay. Instead of dismissing someone’s perspective or ideas, try to understand where they are coming from and how you can work together to achieve a common goal. Kindness is about treating others with respect and compassion. It’s important to remember that behind every screen is a real person with their own unique experiences and challenges. By being kind to one another, we can create a welcoming and supportive environment where everyone feels valued and appreciated. Empathy and kindness can manifest in a variety of ways. It could mean taking the time to review someone’s code and providing constructive feedback instead of tearing it apart. It could mean welcoming new contributors and making an effort to help them feel included. Remember, empathy and kindness is a choice. --- # Issue Bumping URL: https://sindresorhus.com/blog/issue-bumping ![A GitHub comment that only says “any updates?”](https://sindresorhus.com/blog/issue-bumping/issue-bumping.jpg) I frequently receive notifications on GitHub where someone comments, “Any updates?” on an old issue thread. The answer is always “No”. Updates are in the issue. A lack of recent activity on an issue can signify either a lack of time or interest from the maintainers, or that the issue is currently blocked by some external factor. Repeatedly asking for updates on such issues is not productive and will only result in spamming everyone who is subscribed to the issue. ## So what can you do? The most helpful action you could take is to offer your assistance. Even providing some failing tests could be valuable. Another option is to leave a comment that contributes to the issue. For instance, you could provide additional information about a bug report, reproduction steps, a crash report, use-cases for a feature, or suggestions on how to implement a feature or bug fix. If you simply want to express your agreement with an issue, you can use the reactions feature to give it a 👍🏻. ## When is it ok to bump an issue? It’s appropriate to bump an issue when there was supposed to be some action taken, but none occurred. For instance, if a maintainer promises to investigate an issue and fails to follow through, it’s acceptable to remind them. Similarly, if you submit a pull request, the maintainer reviews it, you address the review comments, but then don’t receive any further communication, it’s ok to bump. Please keep in mind that open source is just a hobby for most maintainers and they are often overloaded with notifications. If you’re going to create a notification in someone’s inbox, make it worth it. --- # Small Focused Modules URL: https://sindresorhus.com/blog/small-focused-modules *This was originally an [answer](https://github.com/sindresorhus/ama/issues/10#issuecomment-117766328) on my AMA (Ask Me Anything) about why I make small Node.js modules. My answer applies to Node.js and might not be applicable to your platform. The reason this works so well on Node.js is that you can have [nested dependencies](https://maxogden.com/nested-dependencies.html), so they never conflict.* People get way too easily caught up in the LOC (Lines Of Code). LOC is pretty much irrelevant. It doesn’t matter if the module is one line or hundreds. It’s all about containing complexity. Think of node modules as Lego blocks. You don’t necessarily care about the details of how it’s made. All you need to know is how to use the Lego blocks to build your Lego castle. By making small focused modules you can easily build large complex systems without having to know every single detail of how everything works. Our short-term memory is finite. In addition, by having these modules as reusable packages, other people can reuse them, and when a module is improved or a bug is fixed, every consumer benefits. Imagine if PC manufacturers all made their own CPUs. Most would do it badly. The computer would be more expensive and we would have slower innovation. Instead most use Intel, ARM, etc. This would not be possible if it weren’t for how npm works. The beauty of being able to use [nested dependencies](https://maxogden.com/nested-dependencies.html) means I don’t have to care what dependencies a dependency I use has. That’s powerful. Some years ago. Before Node.js and npm. I had a large database of code snippets I used to copy-paste into projects when I needed it. They were small utilities that sometimes came in handy. npm is now my snippet database. Why copy-paste when you can import it and with the benefit of having a clear intent? Fixing a bug in a snippet means updating one module instead of manually fixing all the instances where the snippet is used. For example, [chalk](https://github.com/chalk/chalk) is one of the most popular modules on npm. What you might not realize is that it’s actually a [collection of modules](https://github.com/chalk/chalk/blob/d7537f37df874619511994f1debf2ec6dbacaa3c/package.json#L48-L52). It depends on a module for [detecting if the terminal supports color](https://github.com/chalk/supports-color), for [getting the ansi escape codes](https://github.com/chalk/ansi-styles), etc. All of this could have been just embedded in the main module, and it probably is in many cases. But that would mean anyone else wanting to create an alternative terminal string styling module would have to reinvent the wheel on everything. By having these supporting modules, people can easily benefit from our work in Chalk and maybe even help improve Chalk indirectly by improving one of the dependencies. Yet another example. I have this module [user-home](https://github.com/sindresorhus/user-home) which gets the user’s home directory. You might think it would be simpler to just do `process.platform === 'win32' ? process.env.USERPROFILE : process.env.HOME`. And most do this. But first, why require everyone to know how to get the home directory? Why not use a “Lego block”? What you also might not realize is that this check is incomplete. On Windows, you should also check `process.env.HOMEDRIVE + process.env.HOMEPATH` and you might also want to do [additional checks](https://github.com/sindresorhus/os-homedir/blob/7e39e2e049de404f06233fa617ecf46fed997a78/index.js). Lego blocks. (Node.js actually has an [API](https://nodejs.org/api/os.html#os_os_homedir) for this now, exactly for the reasons stated above) Do you make your own shoes? No, you buy them in a store. Most don’t care how the shoe is made. Just how good it fits. I want programming to be easier. Making it easier to build durable systems. And the way forward, in my point of view, is definitely not reinventing everything and everyone making the same stupid mistakes over and over.