Powerlevel10k to Starship: Migration Steps and Customization

How to Migrate from Powerlevel10k to Starship Prompt

* This page contains promotional content

A Migration Guide from Powerlevel10k to Starship (2025 Edition)

Introduction

I migrated from Powerlevel10k, which I had used for years, to Starship.
In this article I summarize the differences between the two, recent developments, the migration procedure, and how to customize it.

Powerlevel10k vs Starship

Powerlevel10k

Features:

  • A prompt theme for Zsh only
  • Extremely fast startup time (under 10ms)
  • Beginner-friendly setup through a configuration wizard (p10k configure)
  • More than 10 built-in themes
  • Advanced customization is possible

Drawbacks:

  • Limited to Zsh
  • High memory usage
  • The configuration file is complex (.p10k.zsh)

Starship

Features:

  • Cross-platform support (Bash, Zsh, Fish, PowerShell, Cmd, and so on)
  • Written in Rust and fast (about 20ms, which is no problem in practice)
  • A simple configuration file in TOML format
  • Memory efficient
  • A modular design with high extensibility

Drawbacks:

  • Startup time is slightly slower than Powerlevel10k (though the difference is negligible in practice)

Recent Developments (2025)

The current state of Powerlevel10k

An important fact: Powerlevel10k is currently on life support.

The developer announced in 2025 that maintenance of the project would stop. It still works today, but you cannot expect new features or bug fixes from here on. Adopting it for new projects is not recommended.

The current state of Starship

  • Under active development (GitHub 53.6k+ stars)
  • The community is large and improvements are made continuously
  • As of 2025, it is the most recommended prompt customizer
  • Thanks to cross-platform support, it provides a consistent experience across multiple shell environments

Best practice

As of 2025, migrating to Starship is recommended.

Reasons:

  1. Continuous maintenance is guaranteed
  2. Cross-shell support makes it flexible
  3. The configuration is simple and easy to maintain
  4. Support from an active community

Powerlevel10k’s advantage in startup speed is practically negligible, and Starship’s benefits outweigh it.

Migration Procedure

1. Installing Starship

# Install with Homebrew (macOS)
brew install starship

# Other installation methods
# curl -sS https://starship.rs/install.sh | sh

2. Editing .zshrc

Settings to remove

Remove the settings related to Powerlevel10k:

# Remove: Powerlevel10k instant prompt (near the top of the file)
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
  source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
fi

# Remove: sourcing and configuration of Powerlevel10k
source ~/powerlevel10k/powerlevel10k.zsh-theme
[[ ! -f ~/.p10k.zsh ]] || source ~/.p10k.zsh

Settings to add

Add the initialization code for Starship:

## starship prompt
if _has starship; then
  eval "$(starship init zsh)"
fi

By using the _has function, it does not raise an error even in an environment where Starship is not installed.

3. Checking after the migration

Open a new terminal session and check that Starship is working correctly:

# Check the Starship version
starship --version

# Explain the prompt (for debugging)
starship explain

4. Compatibility with existing settings

Good news: existing Zsh settings (Zinit plugins, completion settings, aliases, and so on) keep working as they are.
Starship is only responsible for displaying the prompt, so there are no conflicts with other settings.

Customization

Where the configuration file lives

The Starship configuration file goes at ~/.config/starship.toml:

mkdir -p ~/.config
touch ~/.config/starship.toml

Using presets

Starship comes with several presets:

# A preset that uses Nerd Font symbols
starship preset nerd-font-symbols -o ~/.config/starship.toml

# Other presets
starship preset no-nerd-font -o ~/.config/starship.toml
starship preset pastel-powerline -o ~/.config/starship.toml
starship preset pure-preset -o ~/.config/starship.toml

A basic customization example

# ~/.config/starship.toml

# Add a blank line before the prompt
add_newline = true

# Command execution timeout (milliseconds)
command_timeout = 500

# The prompt format definition
format = """
$username\
$hostname\
$directory\
$git_branch\
$git_status\
$nodejs\
$python\
$rust\
$character
"""

# Customizing the directory module
[directory]
truncation_length = 3
truncate_to_repo = true
format = "at [$path]($style) "

# Customizing the Git branch module
[git_branch]
symbol = "🌱 "
format = "on [$symbol$branch(:$remote_branch)]($style) "

# Customizing the character (the prompt symbol)
[character]
success_symbol = "[➜](bold green)"
error_symbol = "[✗](bold red)"

Disabling modules

You can disable modules you do not need:

# Hide package information
[package]
disabled = true

# Hide the Docker context
[docker_context]
disabled = true

Advanced customization

Conditional display

# Show Git information only inside a Git repository
[git_branch]
only_attached = true

A custom command module

# Show the result of running a custom command
[custom.git_email]
command = "git config user.email"
when = "git rev-parse --git-dir 2> /dev/null"
format = "via [$output]($style)"

Debugging

When there is a problem with the configuration:

# Show an explanation of each element of the prompt
starship explain

# Enable verbose logging
STARSHIP_LOG=trace starship explain

# Measure performance
starship timings

Summary

Migrating from Powerlevel10k to Starship is recommended for the following reasons:

  1. Continuous maintenance is guaranteed
  2. Cross-platform support makes it flexible
  3. The configuration is simple and easy to maintain
  4. Support from an active community

The migration work is comparatively easy and compatibility with existing settings is high, so it goes smoothly. Starship’s TOML-based configuration is easier to understand than Powerlevel10k’s complex configuration file, and it is easy to customize.