Skip to content
Delightful console output for Swift developers.
Swift Ruby Objective-C
Branch: master
Clone or download

Latest commit

Latest commit 6471f2c Jan 19, 2020


Type Name Latest commit message Commit time
Failed to load latest commit information.
.bundle Update gem Apr 3, 2019
Rainbow.xcodeproj Bump version to 3.1.5 Apr 3, 2019
Sources Merge pull request #35 from msanders/ms/enum-namespace Jan 19, 2020
Support Bump version to 3.1.5 Apr 3, 2019
Tests Fix linux test Jan 19, 2020
fastlane Update fastlane May 19, 2018
.gitignore Add readme Sep 30, 2016
.ruby-version Upgrade gem Nov 7, 2019
.travis.yml Update test script Nov 7, 2019
Gemfile Update gem Sep 22, 2017
Gemfile.lock Bump excon from 0.68.0 to 0.71.0 Dec 16, 2019
LICENSE Readme and license Dec 24, 2015
LinuxMain.swift Fix linux test Jan 19, 2020
Package.swift Improved Swift Manifest file Nov 27, 2017 Upgrade to Swift 4.1 Apr 13, 2018
RainbowSwift.podspec Bump version to 3.1.5 Apr 3, 2019


Rainbow adds text color, background color and style for console and command line output in Swift. It is born for cross platform software logging in terminals, working in both Apple's platforms and Linux.


Nifty way, using the String extension, and print the colorized string:

import Rainbow

print("Red text".red)
print("Blue background".onBlue)
print("Light green text on white background".lightGreen.onWhite)

print("Cyan with bold and blinking".cyan.bold.blink)

print("Plain text".red.onYellow.bold.clearColor.clearBackgroundColor.clearStyles)

It will give you something like this:

You can also use the more verbose way if you want:

import Rainbow
let output = "The quick brown fox jumps over the lazy dog"
                .applyingCodes(, BackgroundColor.yellow, Style.bold)
print(output) // Red text on yellow, bold of course :)

Motivation and Compatibility

Thanks to the open source of Swift, developers now could write cross platform programs with the same language. And I believe the command line software would be the next great platform for Swift. Colorful and well organized output always helps us to understand what happens. It is really a necessary utility to create wonderful software.

Rainbow should work well in both OS X and Linux terminals. It is smart enough to check whether the output is connected to a valid text terminal or not, to decide the log should be modified or not. This could be useful when you want to send your log to a file instead to console.

Although Rainbow is first designed for console output in terminals, you could use it in Xcode with XcodeColors plugin installed too. It will enable color output for better debugging experience in Xcode.

Please notice, after Xcode 8, third party plugins in bundle (like XcodeColors) is not supported anymore. See this.


Rainbow 3.x supports from Swift 4. If you need to use Rainbow in Swift 3, use Rainbow 2.1 instead.

Swift Package Manager

If you are developing a cross platform software in Swift, Swift Package Manager might be your choice for package management. Just add the url of this repo to your Package.swift file as a dependency:

// swift-tools-version:4.0
import PackageDescription

let package = Package(
    name: "YourAwesomeSoftware",
    dependencies: [
        .package(url: "", from: "3.0.0")

Then run swift build whenever you get prepared.

You could know more information on how to use Swift Package Manager in Apple's official page.


Add the RainbowSwift pod to your Podfile:

source ''
platform :ios, '8.0'

pod 'RainbowSwift', '~> 3.0'

And you need to import RainbowSwift instead of Rainbow if you install it from CocoaPods.

// import Rainbow
import RainbowSwift

print("Hello CocoaPods".red)


Carthage is a decentralized dependency manager for Cocoa application.

To integrate Rainbow with Carthage, add this to your Cartfile:

github "onevcat/Rainbow" ~> 3.0

Run carthage update to build the framework and drag the built Rainbow.framework into your Xcode project (as well as embed it in your target if necessary).


Follow and contact me on Twitter or Sina Weibo. If you find an issue, just open a ticket on it. Pull requests are warmly welcome as well.


Rainbow is released under the MIT license. See LICENSE for details.

You can’t perform that action at this time.