consolelog.tools

Progress Bar Generator

Design linear, circular, stepped, or semicircle progress bars — determinate or indeterminate — with gradients, stripes, labels, and a live animated preview. Export self-contained HTML+CSS, CSS, a React component, or Tailwind markup with correct ARIA.

About this ToolHow it works, benefits & use cases

Design a progress bar visually and walk away with production-ready code. Pick one of four shapes — a linear track, a circular SVG ring, a stepped segment row, or a semicircle gauge — and switch between determinate (a known percentage) and indeterminate (a looping busy animation). A sticky live preview renders the real bar, not a mockup: drag the value slider to move the fill, hit the Animate button to sweep it from zero to the target, and toggle indeterminate to watch the loop. Style the fill as a solid colour, a two-stop gradient, static or animated stripes, or a soft pulse; set the track and gradient colours; and tune height, corner radius, ring size and stroke, step count, and transition timing. The markup ships with correct ARIA — role="progressbar" plus aria-valuemin/max, and aria-valuenow only when the value is known — and a prefers-reduced-motion guard that disables animation for users who request it. Export a self-contained HTML + CSS snippet, standalone CSS, a React component with a value prop, or Tailwind-class markup.

How to Use

  1. 1Choose a shape: Linear, Circular, Stepped, or Semicircle.
  2. 2Set the value with the slider, or turn on Indeterminate for a looping busy state.
  3. 3Pick a fill style — solid, gradient, striped, animated stripes, or pulse — and set the fill, gradient, and track colors.
  4. 4Tune the dimensions: height and radius for linear, size and stroke for circular, step count for stepped, plus transition timing.
  5. 5Toggle the percentage label (inside, outside, or centered) and the load animation, then press Animate to preview the 0 to value sweep.
  6. 6Pick an output format — HTML + CSS, CSS, React, or Tailwind — then copy, download, or share it.

Key Benefits

  • Four shapes from one model: linear, circular SVG ring, stepped segments, and semicircle gauge
  • Determinate and indeterminate modes with a true looping animation for busy states
  • Five fill styles — solid, gradient, striped, animated stripes, and pulse — all pure CSS
  • Live preview with a value slider and an animate button that sweeps the fill from zero
  • Correct ARIA baked in, with aria-valuenow omitted automatically when indeterminate
  • A prefers-reduced-motion guard so animation respects user motion preferences
  • Export to self-contained HTML + CSS, CSS, a React component with a value prop, or Tailwind markup

Common Use Cases

  • Adding an upload or form-completion bar that matches your brand colors
  • Building a circular percentage ring for a dashboard KPI or score
  • Creating a stepped indicator for a multi-step checkout or onboarding flow
  • Dropping an indeterminate slim bar at the top of a page during async loads
  • Generating an accessible React ProgressBar component for a design system
65%
Presets
Shape & style
Dimensions
Label & animation

Copy, download, share, or pipe to another tool

<style>
.progress-track {
  position: relative;
  width: 100%;
  height: 16px;
  background: #e5e7eb;
  border-radius: 999px;
  overflow: hidden;
}

.progress-fill {
  position: relative;
  height: 100%;
  width: 65%;
  background: linear-gradient(90deg, #6366f1 0%, #ec4899 100%);
  border-radius: 999px;
  transition: width 600ms ease;
}

@media (prefers-reduced-motion: reduce) {
  .progress-fill, .progress-ring, .progress-track { animation: none !important; transition: none !important; }
}
</style>

<div class="progress">
  <div class="progress-track" role="progressbar" aria-valuemin="0" aria-valuemax="100" aria-valuenow="65">
    <div class="progress-fill"></div>
  </div>
  <span class="progress-value">65%</span>
</div>
Accessibility notes
  • The bar uses role="progressbar" with aria-valuemin and aria-valuemax.
  • aria-valuenow is set to 65 and should be updated as progress changes.
  • Animations are disabled automatically under prefers-reduced-motion.
Determinate or indeterminate, four shapes

Every bar emits correct ARIA — role="progressbar" with aria-valuemin/max, and aria-valuenow when the value is known (omitted for indeterminate). Gradient, striped, animated-stripe and pulse fills are pure CSS, and a prefers-reduced-motion guard disables animation for users who ask for it. Export a self-contained HTML+CSS snippet, standalone CSS, a React component with a value prop, or Tailwind markup.

Was this tool helpful?

Share Your Experience

Help others discover this tool!

Related tools