---
title: "Progress Display"
description: "Show progress bars and task status for long-running operations"
uid: "console-live-progress"
order: 4000
---
The Progress display renders animated progress bars for tracking task completion in real-time.
## When to Use
Use Progress when you need to **track completion status for long-running operations**. Common scenarios:
- **Multi-step processes**: Show progress across multiple sequential or concurrent tasks
- **File operations**: Display download, upload, or processing progress
- **Build pipelines**: Track compilation, testing, and deployment steps
- **Data processing**: Monitor record processing, imports, or transformations
For **simple status messages without progress tracking**, use [Status](xref:console-live-status) instead. For **real-time data updates**, consider [Live Display](xref:console-live-live-display).
> [!CAUTION]
> Progress display is not thread safe. Using it together with other interactive components such as prompts, status displays, or other progress displays is not supported.
## Basic Usage
Create a progress context and add tasks to track their completion.
```csharp:xmldocid,bodyonly
M:Spectre.Docs.Examples.SpectreConsole.Reference.Live.ProgressExamples.BasicProgressExample
```
## Managing Tasks
### Multiple Tasks
Track several concurrent operations with individual progress bars.
```csharp:xmldocid,bodyonly
M:Spectre.Docs.Examples.SpectreConsole.Reference.Live.ProgressExamples.ProgressMultipleTasksExample
```
### Increment vs Value Assignment
Use `Increment()` for relative progress updates or set `Value` directly for absolute positioning.
```csharp:xmldocid,bodyonly
M:Spectre.Docs.Examples.SpectreConsole.Reference.Live.ProgressExamples.ProgressIncrementExample
```
### Indeterminate Progress
Use `IsIndeterminate()` when the total duration or size is unknown, showing an animated progress bar without percentage.
```csharp:xmldocid,bodyonly
M:Spectre.Docs.Examples.SpectreConsole.Reference.Live.ProgressExamples.ProgressIndeterminateExample
```
### Adding Tasks Dynamically
Add new tasks during execution based on discovered work or changing requirements.
```csharp:xmldocid,bodyonly
M:Spectre.Docs.Examples.SpectreConsole.Reference.Live.ProgressExamples.ProgressDynamicTasksExample
```
### Updating Descriptions
Change task descriptions during execution to provide detailed status updates.
```csharp:xmldocid,bodyonly
M:Spectre.Docs.Examples.SpectreConsole.Reference.Live.ProgressExamples.ProgressTaskDescriptionUpdateExample
```
## Display Columns
### Custom Column Configuration
Configure which information columns appear in the progress display using `Columns()`.
```csharp:xmldocid,bodyonly
M:Spectre.Docs.Examples.SpectreConsole.Reference.Live.ProgressExamples.ProgressCustomColumnsExample
```
### Available Columns
| Column | Purpose |
|--------|---------|
| `TaskDescriptionColumn` | Shows the task description text |
| `ProgressBarColumn` | Displays the animated progress bar |
| `PercentageColumn` | Shows completion percentage |
| `RemainingTimeColumn` | Estimates time until completion |
| `ElapsedTimeColumn` | Shows time since task started |
| `SpinnerColumn` | Adds an animated spinner indicator |
| `DownloadedColumn` | Shows downloaded bytes (formatted) |
| `TransferSpeedColumn` | Shows transfer rate (bytes/sec) |
### Spinner Animation
Add visual feedback with a spinning animation indicator.
```csharp:xmldocid,bodyonly
M:Spectre.Docs.Examples.SpectreConsole.Reference.Live.ProgressExamples.ProgressWithSpinnerExample
```
### Timing Information
Display elapsed time and remaining time estimates for operations.
```csharp:xmldocid,bodyonly
M:Spectre.Docs.Examples.SpectreConsole.Reference.Live.ProgressExamples.ProgressTimingColumnsExample
```
### Download Progress
Use specialized columns for file download scenarios with size and speed information.
```csharp:xmldocid,bodyonly
M:Spectre.Docs.Examples.SpectreConsole.Reference.Live.ProgressExamples.ProgressDownloadExample
```
## Styling
Customize progress bar appearance with colors to match your application theme or convey meaning.
```csharp:xmldocid,bodyonly
M:Spectre.Docs.Examples.SpectreConsole.Reference.Live.ProgressExamples.ProgressBarStylingExample
```
## Refresh Behavior
### Auto Clear
Automatically remove the progress display after all tasks complete using `AutoClear(true)`.
```csharp:xmldocid,bodyonly
M:Spectre.Docs.Examples.SpectreConsole.Reference.Live.ProgressExamples.ProgressAutoClearExample
```
### Hide Completed Tasks
Remove completed tasks from view while keeping active ones visible using `HideCompleted(true)`.
```csharp:xmldocid,bodyonly
M:Spectre.Docs.Examples.SpectreConsole.Reference.Live.ProgressExamples.ProgressHideCompletedExample
```
## Async Operations
Use `StartAsync()` for async/await scenarios with Task-based operations.
```csharp:xmldocid,bodyonly
M:Spectre.Docs.Examples.SpectreConsole.Reference.Live.ProgressExamples.ProgressAsyncExample
```
### Returning Values
Progress operations can return values for use after completion.
```csharp:xmldocid,bodyonly
M:Spectre.Docs.Examples.SpectreConsole.Reference.Live.ProgressExamples.ProgressReturnValueExample
```
## See Also
- - Step-by-step guide
- - Learn progress basics
- - Simple spinner for indeterminate operations
- - Available spinner animations
## API Reference