A colorful, lightweight hourly forecast app – built entirely in the menubar.

Sparrow - A colorful hourly forecast menubar app | Product Hunt

built for Mac

A native macOS experience

Sparrow is built entirely in Swift, and seamlessly integrates with the menu bar for a clean user experience.Powered by OpenWeatherMap API 3.0

today & tomorrow

Immediate, context-based weather

Today's high and low is always displayed in the menubar. When opened, the hourly forecast is shown – as well as tomorrow's forecast if needed.

sunrise & sunset

Easy, at-a-glance information

Even though the weather is based on hourly forecasts, sunrises and sunsets are accurately displayed between the hours they appear.

color themes

Change the look

All color themes are based on popular birds. Choose from Sparrow, Blue Jay, Parrot, Cardinal, Flamingo, Robin, Snow Owl (white) or Raven (black).



Use this form for any questions, concerns, feedback, issues, or general comments. I will try to get back with you as soon as possible :)


Privacy Policy

Curtis Thornton built the Sparrow Weather app as a Free app. This SERVICE is provided by Curtis Thornton at no cost and is intended for use as is.This page is used to inform visitors regarding my policies with the collection, use, and disclosure of Personal Information if anyone decided to use my Service.If you choose to use my Service, then you agree to the collection and use of information in relation to this policy. The Personal Information that I collect is used for providing and improving the Service. I will not use or share your information with anyone except as described in this Privacy Policy.The terms used in this Privacy Policy have the same meanings as in our Terms and Conditions, which are accessible at Sparrow Weather unless otherwise defined in this Privacy Policy.Information Collection and UseFor a better experience, while using our Service, I may require you to provide us with certain personally identifiable information. The information that I request will be retained on your device and is not collected by me in any way.Log DataI want to inform you that whenever you use my Service, in a case of an error in the app I collect data and information (through third-party products) on your phone called Log Data. This Log Data may include information such as your device Internet Protocol (“IP”) address, device name, operating system version, the configuration of the app when utilizing my Service, the time and date of your use of the Service, and other statistics.CookiesCookies are files with a small amount of data that are commonly used as anonymous unique identifiers. These are sent to your browser from the websites that you visit and are stored on your device's internal memory.This Service does not use these “cookies” explicitly. However, the app may use third-party code and libraries that use “cookies” to collect information and improve their services. You have the option to either accept or refuse these cookies and know when a cookie is being sent to your device. If you choose to refuse our cookies, you may not be able to use some portions of this Service.Service ProvidersI may employ third-party companies and individuals due to the following reasons:* To facilitate our Service;
* To provide the Service on our behalf;
* To perform Service-related services; or
* To assist us in analyzing how our Service is used.
I want to inform users of this Service that these third parties have access to their Personal Information. The reason is to perform the tasks assigned to them on our behalf. However, they are obligated not to disclose or use the information for any other purpose.SecurityI value your trust in providing us your Personal Information, thus we are striving to use commercially acceptable means of protecting it. But remember that no method of transmission over the internet, or method of electronic storage is 100% secure and reliable, and I cannot guarantee its absolute security.Links to Other SitesThis Service may contain links to other sites. If you click on a third-party link, you will be directed to that site. Note that these external sites are not operated by me. Therefore, I strongly advise you to review the Privacy Policy of these websites. I have no control over and assume no responsibility for the content, privacy policies, or practices of any third-party sites or services.Children’s PrivacyI do not knowingly collect personally identifiable information from children. I encourage all children to never submit any personally identifiable information through the Application and/or Services. I encourage parents and legal guardians to monitor their children's Internet usage and to help enforce this Policy by instructing their children never to provide personally identifiable information through the Application and/or Services without their permission. If you have reason to believe that a child has provided personally identifiable information to us through the Application and/or Services, please contact us. You must also be at least 16 years of age to consent to the processing of your personally identifiable information in your country (in some countries we may allow your parent or guardian to do so on your behalf).Changes to This Privacy PolicyI may update our Privacy Policy from time to time. Thus, you are advised to review this page periodically for any changes. I will notify you of any changes by posting the new Privacy Policy on this page.This policy is effective as of 2023-05-22Contact UsIf you have any questions or suggestions about my Privacy Policy, do not hesitate to contact me at


Help & FAQ

Sparrow isn't showing in the menubar

Sometimes macOS will hide menubar items if there isn't enough space. Try closing some menubar apps, or moving Sparrow to the right by command+click dragging.

The app is stuck at "Taking Flight..."

Sparrow requires your location in order to display the local weather. You should receive a prompt to allow Sparrow to access location services when the app is first run. If not, check your System Settings > Privacy & Security > Location Services and make sure Sparrow Weather is turned on.

I'm using a wired internet connection

Sparrow uses wifi in order to determine your location. If you're using a wired internet connection, temporarily switch on your wifi and restart Sparrow. Once your location is determined, you can switch off wifi and continue using your MacBook as usual, and Sparrow will continue working even with a wired connection.

Nothing happens when I click on a condition item

In order to increase readability in each hour's submenu, each condition item copies information to the clipboard when selected.By adding this function, each condition item is no longer in a disabled state, which made it difficult to read in low contrast settings.

I have other issues

If you're still have issues, reach out to me using the feedback form and I'll be more than happy to help you out :)

Why I Built Sparrow

There’s something special about the menubar on macOS. One of the primary distinctions between macOS and Windows at the time was having all of the menu options in the same place, and contextualized based on the selected application. I didn’t own a Mac until I was in college (2008) so it was a bit of an acclimation. But I liked how compartmented and organized it was.Even the smallest of macOS apps today use some sort of windowed view – I say this not to disparage them. The possibilities presented in windowed views are almost limitless. But I wanted to go smaller, and the menubar is perfect for that.When I first set out to create a menubar app, I had many ideas. Displaying weather in the menubar was the best starting point because of how small the information could be displayed, and the availability of APIs.

Why "Sparrow"

I went with Sparrow because I wanted it to stand out against the hundreds of other weather apps. I used birds as the main theme because of their connection to nature and, by proximity, weather.There is another app that I use almost daily that inspired the name. It’s called Speediness and the creator used a hummingbird for the logo. Speediness itself is a simple internet speed checker and tracker tool. The hummingbird set it apart from the others, and I wanted to make use of that uniqueness with Sparrow.

The Menu

I wanted it to be native to the macOS menubar – without the use of popovers. This presented challenges mainly in how the menubar works. Selected items are supposed to perform an action and close the menu. I needed to make the information clear and easy to distinguish hourly forecasts with information about each hour in each menu item’s submenu.Displaying this information was a journey of discovery about the use of local calculations. Things like wind direction aren’t very clear when looking at an API response. I also had to manually calculate information like UV index severity to make it clear to the user that it was more than just a number, and assign values to them such as high, low, moderate, etc.Initially, this information was displayed in a “disabled” state. Since the behavior of the menubar is consistent across all apps, any menu item that did not have an action was displayed in this way. Unfortunately, I didn’t have any control with readability when it came to this state, and I needed the information to be easily readable. I didn’t want to override the native macOS disabled state by setting the text as light or dark. This would be misleading. Instead, I assigned a “copy to clipboard” function to each submenu item. That way the information will appear in a readable enabled state while also performing an action that could be useful in some situations.

I was unsure about including the Settings in the menubar, but it worked out surprisingly well. Every menu time in the settings will refresh the app itself, so the user can almost always see that change take place. Despite wanting everything to be in the app’s menu, I still had to include the settings in a separate Preferences window because it’s one of the few windows that can’t be removed (in my experience), and I didn’t want the user to be staring at a blank window when it was opened.

The Color Gradient

When displaying the hourly forecasts’ conditions, I wanted to use native Apple SF symbols. That worked really well, but I couldn’t help but feel it was missing something. I needed to add some color, but not just any color. I wanted it to correlate with the temperature itself, since that was a data point I could use when configuring the RGB values of each line item’s symbol.This was another exploration in the magic of math. Since each RGB value could be calculated with a variable like temperature, It was far too easy to go beyond the 256 value boundary that can be assigned. This resulted in a lot of trial and error. Once I was able to establish a base formula, I was able to experiment with different color gradients and assign different types of birds that correlated with those colors. Luckily, there are some very colorful birds in the world.

In short, Sparrow was a lot of fun to build. It was my first exploration in Swift code and API endpoints. I learned how to push the boundaries of what a menubar app can do. I’m looking forward in continuing that journey with future projects.And as always: Thank you! As a product designer, I love hearing feedback and ideas on how to make Sparrow better :)


What's New

Version 12

  • Fixed an issue with cardinal and intercardinal directions with specific system languages not displaying correctly

  • Added two new color themes "Rosella" and "Budgie"

Version 11

  • Sparrow is now available in Slovak and Portuguese

Version 10

  • Sparrow is now available in French, Dutch, German, Italian, Korean, and Spanish

Version 9.0

  • Choose between “High and Low” or “Current Temperature” for menubar display options

Version 8.0

  • Temperature and time is now monospaced to make forecasts appear a little more readable

  • Auto Refresh and Manual Refresh has been added to Settings under Refresh Rate. When Auto Refresh is enabled, Sparrow will automatically refresh weather data every hour on the hour

  • Daily Summary has been added to the current location submenu

  • Quit now has an assigned keyboard shortcut

Version 7.0

  • Bug fixes for first-time users (defaults now show as checked unless changed)

  • Added system symbol for Tomorrow

  • Adjusted 24-hour time format to show trailing zeroes

  • Added context to UV index (Low, Moderate, High, Very High, and Extreme)

  • Added new color theme “Robin”

Version 6.0

  • Weather alerts will now appear at the top of the menu, and includes relevant information in the alert submenu.

  • Added color theme "Flamingo" 🦩

Version 5.0

  • To increase readability, a copy to clipboard function has been added to each condition item in the hourly submenu.

Version 4.0

  • Added reverse geocoding to display current city

Version 3.0

  • Added ability to show or hide the dock icon

Version 2.0

  • Added color theme "Cardinal"

  • Added the ability to switch between 12-hour and 24-hour time formats

  • Added settings to App's Settings window. This was previously blank.

  • Added "Help & FAQ" to main menu