# Progress Documentation
Visualizes the progress or completion status of a task or process.
This is a documentation section that potentially contains examples, demos, and other useful information related to a specific part of Bits UI. When helping users with this documentation, you can ignore the classnames applied to the demos unless they are relevant to the user's issue.
```svelte
Uploading file...
{value}%
```
While often visually similar, progress bars and [Meters](/docs/components/meter) serve distinct purposes:
**Progress**:
- Shows **completion status** of a task
- Value only increases as task progresses
- Examples: File upload, installation status, form completion
- Use when tracking advancement toward completion **Meter**:
- Displays a **static measurement** within a known range (0-100)
- Value can fluctuate up/down based on real-time measurements
- Examples: CPU usage, battery level, sound volume
- Use when showing current state relative to capacity If a meter better fits your requirements, check out the [Meter](/docs/components/meter) component.
## Structure
```svelte
```
## Reusable Components
It's recommended to use the `Progress` primitive to create your own custom meter component that can be used throughout your application. In the example below, we're using the `Progress` primitive to create a more comprehensive meter component.
```svelte
{label}
{valueLabel}
```
You can then use the `MyProgress` component in your application like so:
+page.svelte
```svelte
```
Of course, you'd want to apply your own styles and other customizations to the `MyProgress` component to fit your application's design.
## Accessibility
If a visual label is used, the ID of the label element should be pass via the `aria-labelledby` prop to `Progress.Root`. If no visual label is used, the `aria-label` prop should be used to provide a text description of the progress bar.
## API Reference
### Progress.Root
The progress bar component.
| Property | Type | Description |
| ------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `max` | `number` | The maximum value of the progress bar.`Default: 100` |
| `min` | `number` | The minimum value of the progress bar.`Default: 0` |
| `value` | `number \| null` | The current value of the progress bar. If set to `null``Default: 0` |
| `ref` $bindable | `HTMLDivElement` | The underlying DOM element being rendered. You can bind to this to get a reference to the element.`Default: undefined` |
| `children` | `Snippet` | The children content to render.`Default: undefined` |
| `child` | `Snippet`- type SnippetProps = { props: Record\; }; | Use render delegation to render your own element. See [Child Snippet](/docs/child-snippet) docs for more information.`Default: undefined` | | Data Attribute | Value | Description |
| ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| `data-value` | `''` | The current value of the progress bar. |
| `data-state` | `enum`- '' | The current state of the progress bar. |
| `data-min` | `''` | The minimum value of the progress bar. |
| `data-max` | `''` | The maximum value of the progress bar. |
| `data-indeterminate` | `''` | Present when the value is `null`. |
| `data-progress-root` | `''` | Present on the root element. |