Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Go
  3. yacspin

yacspin

Apache-2.0Gov0.13.12

A Go library providing over 90 customizable terminal spinners with live updates, concurrency safety, and TTY detection.

GitHubGitHub
456 stars10 forks0 contributors

What is yacspin?

yacspin is a Go library for creating animated spinners in terminal applications. It provides visual feedback for ongoing processes, with features like live message updates, concurrency safety, and automatic TTY detection. The library solves common issues in spinner implementations, such as message flickering and unsafe concurrent usage.

Target Audience

Go developers building command-line interfaces (CLIs) or tools that require progress indicators for long-running tasks, such as data processing, file uploads, or system operations.

Value Proposition

Developers choose yacspin for its robust API, which supports real-time message updates without sacrificing animation smoothness, along with built-in concurrency safety and extensive customization options not found in simpler spinner libraries.

Overview

Yet Another CLi Spinner; providing over 80 easy to use and customizable terminal spinners for multiple OSes

Use Cases

Best For

  • Adding progress indicators to CLI tools with multiple concurrent tasks
  • Displaying real-time status updates during file uploads or downloads
  • Building interactive terminal applications with smooth animations
  • Creating CLI tools that need to run in both TTY and non-TTY environments
  • Implementing task queues with success/failure visual feedback
  • Developing Go-based DevOps or automation scripts with user-friendly output

Not Ideal For

  • Projects requiring cross-language CLI tools not written in Go
  • Applications that output solely to log files without terminal interaction
  • Developers needing zero-configuration, drop-in spinner components with minimal options
  • Environments with strict dependency constraints that avoid external libraries like fatih/color

Pros & Cons

Pros

Dynamic Width Animation

Automatically pads spinner frames to keep message text stationary, ensuring smoother visuals as demonstrated in the README's comparison gifs between yacspin and other libraries.

Concurrency Safety

Thread-safe design allows configuration updates while the spinner is running, addressing data race issues that the README notes were present in the briandowns/spinner library.

Live Message Updates

Messages update independently of animation timing, enabling real-time progress display without sacrificing aesthetic frequency, as shown in the upload example gif.

Success/Failure States

Customizable Stop() and StopFail() methods with configurable characters and colors let spinners indicate task completion, useful for serial task status as illustrated in the README's stop and stop_fail gifs.

Cons

Configuration Overhead

With numerous Config fields like Frequency, CharSet, SuffixAutoColon, and TerminalMode, setup is more complex compared to simpler spinner libraries, potentially overwhelming for basic use cases.

Go-Exclusive Dependency

Limited to Go projects, making it unsuitable for CLI tools built in other languages, and it relies on the external fatih/color library for color mappings, adding an extra dependency.

Limited Multi-Spinner Support

The README focuses on single-spinner concurrency safety and doesn't provide built-in handling for multiple simultaneous spinners, requiring manual instance management which can be error-prone.

Frequently Asked Questions

Quick Stats

Stars456
Forks10
Contributors0
Open Issues6
Last commit4 years ago
CreatedSince 2019

Tags

#progress-indicators#open-source#terminal#go-library#statusbar#spinner#golang#terminal-ui#cli#concurrency#go#cli-tools#command-line-utilities

Built With

G
Go

Included in

Go169.1k
Auto-fetched 10 hours ago

Related Projects

bubbleteabubbletea

A powerful little TUI framework 🏗

Stars44,839
Forks1,312
Last commit6 days ago
fxfx

Terminal JSON viewer & processor

Stars20,620
Forks486
Last commit13 days ago
termuitermui

Golang terminal dashboard

Stars13,581
Forks819
Last commit1 year ago
lipglosslipgloss

Style definitions for nice terminal layouts 👄

Stars11,800
Forks392
Last commit2 days ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub