ChristmasFree icon 34 styles animated

Bauble icon

A round Christmas ornament with a cap and a hook, for tree decorations. Free to use in slides, documents, websites and apps. No sign-up, no credit needed.

Also known as ornament · christmas ball · christmas ornament · xmas ball · tree ornament · decoration · xmas ornament · ball ornament

Style LineClean outlines. The everyday choice for apps, websites and slides.

All 34 styles

Open in the libraryAsk AI

16
24
32
48

Use it in code

<i class="with with-bauble"></i>

Once per page<script src="https://cdn.jsdelivr.net/npm/@withicons/classes@latest/dist/with-loader.js" defer></script>

Make it bigger or smallerfont size, a size class or an exact size

The icon is 1em square, so it follows the text size. Three ways to make it 48 px:

Font size also grows with the text around it

<i class="with with-bauble" style="font-size: 48px"></i>

A size class with-xs, with-sm, with-lg, with-2x to with-5x: times the text size

<i class="with with-bauble with-3x"></i>

An exact size whatever the text size

<i class="with with-bauble" style="--with-size: 48px"></i>

Setting only height does not work: the width stays 1em.

import { Bauble } from '@withicons/react'
<Bauble size={24} />

Installnpm i @withicons/react

Make it bigger or smallerthe size prop

Use the size prop: a number in pixels, or any CSS length.

<Bauble size={48} />
import { Bauble } from '@withicons/vue'
<Bauble :size="24" />

Installnpm i @withicons/vue

Make it bigger or smallerthe size prop

Use the size prop: a number in pixels, or any CSS length.

<Bauble :size="48" />
import { Bauble } from '@withicons/svelte'
<Bauble size={24} />

Installnpm i @withicons/svelte

Make it bigger or smallerthe size prop

Use the size prop: a number in pixels, or any CSS length.

<Bauble size={48} />
import { Bauble } from '@withicons/angular'
<with-icon [icon]="Bauble" [size]="24" />

Installnpm i @withicons/angular

Make it bigger or smallerthe size input

Use the size input: a number in pixels, or any CSS length.

<with-icon [icon]="Bauble" [size]="48" />
import { Bauble } from '@withicons/solid'
<Bauble size={24} />

Installnpm i @withicons/solid

Make it bigger or smallerthe size prop

Use the size prop: a number in pixels, or any CSS length.

<Bauble size={48} />
<with-icon name="bauble"></with-icon>

Once per page<script type="module" src="https://cdn.jsdelivr.net/npm/@withicons/web@latest/dist/cdn.js"></script>

Make it bigger or smallerthe size attribute

Use size: pixels, or any CSS length.

<with-icon name="bauble" size="48"></with-icon>
<img src="https://cdn.jsdelivr.net/npm/@withicons/core@latest/dist/svg/line/bauble.svg" width="24" height="24" alt="Bauble">

No installpaste it inline to recolour it

Make it bigger or smallerwidth and height

Change width and height. SVG stays sharp at any size.

<img src="https://cdn.jsdelivr.net/npm/@withicons/core@latest/dist/svg/line/bauble.svg" width="48" height="48" alt="">
Every stack, props and setup
On this page

Optional · live preview

Make it yours

Your choices follow you everywhere: the preview, every download, the examples and the code.

Customize

Pick a colour or a palette, set the size and line, add a little motion, or make it turn into another icon.

Download in any format

Pick what it’s for. We suggest the right file, already in your style and colours.

Bauble studio

Line

Opening the studio…

Ten everyday places

See it in use

Buttons, slides, lists and cards, drawn live with your choices above. Hover or tap a card to see the animation.

No setup · free

Get help using this icon

Pick what you need, add a line about what you’re making, and choose your AI assistant. We write the brief about the Bauble icon in the Line style, copy it, and open the assistant for you.

Use it in your favourite app

Quick steps for the tools most people use. All step-by-step guides

  1. Google Slides

    1. Press Copy image above.
    2. Click your slide and paste with Ctrl+V (⌘+V on a Mac).
    3. Or drag the big preview straight onto the slide.
    Google Slides guide
  2. PowerPoint

    1. Press Download SVG.
    2. Drag the file onto your slide (or Insert → Pictures).
    3. Recolour it any time: Graphics Format → Graphics Fill.
    PowerPoint guide
  3. Canva

    1. Press Download SVG.
    2. In Canva open Uploads → Upload files.
    3. Click the icon in your design to change its colour.
    Canva guide
  4. Figma

    1. Press Copy SVG code.
    2. Paste into your Figma canvas.
    3. It arrives as an editable vector, ready to resize and recolour.
    Figma guide
  5. Notion

    1. Press Copy image and paste into any page.
    2. For a page icon: Add icon → Upload, and pick the 256 px PNG.
    Notion guide

Bauble in all 34 styles

Same icon, thirty-four looks, in six groups. Not sure which? Pick what you’re making.

Download all 734 Line SVGs (.zip, 0.44 MB)

Essentials

Clean icons for apps, websites and documents.

  • Line

    Menus, toolbars, buttons

  • Solid

    Selected states, tab bars, small sizes

  • Duo

    Feature lists, onboarding, SaaS and landing pages

  • Suite

    Business apps, intranets, admin consoles

Product & brand

For SaaS sites, launches and bold brand graphics: tiles, app icons and loud shapes.

  • Bento

    Feature grids, bento layouts, settings screens

  • Dock

    App launchers, app-store art, product pages

  • Brutal

    Startups, portfolios, newsletters

  • Bauhaus

    Posters, portfolios, galleries

3D & glass

Depth and shine for hero sections, decks and marketing.

  • Clay

    AI products, onboarding, landing pages

  • Glass

    App screens, dashboards, tech launches

  • Liquid

    Modern app interfaces, dashboards, hero art

  • Chrome

    Music, fashion, events

  • Soft 3D

    Landing pages, onboarding, app stores

  • Luxe

    Hero sections, app tiles, pricing tiers

  • Skeuo

    App icons, dashboards, music and photo apps

Playful

Cute, colourful and fun: for kids, social posts and games.

  • Kawaii

    Journals, kids, cafés

  • Plush

    Kids apps, learning games, toy shops

  • Sticker

    Social posts, merch, scrapbooks

  • Gloss

    App launchers, hero sections, kids and consumer brands

  • Pastel

    Wellness apps, journals, planners

  • Pixel

    Games, hackathons, retro tech

  • Retro

    Posters, events, cafés

Artistic

Illustrated looks with character: print, editorial and themed designs.

  • Sketch

    Education, workshops, onboarding

  • Engrave

    Editorial, finance, certificates

  • Blueprint

    Docs, engineering, architecture

  • Anime

    Games, streaming, fan sites

  • Gothic

    Fantasy and RPG games, books, music

  • Coquette

    Beauty, fashion, weddings

Holidays

For festivals and seasonal campaigns: Diwali, Durga Puja, Holi, Halloween, Christmas, Lunar New Year and Valentine's.

  • Utsav

    Diwali and Durga Puja greetings, Indian brands, weddings

  • Rangoli

    Diwali, Durga Puja, Holi and Navratri campaigns

  • Halloween

    Halloween campaigns, party invites, game events

  • Christmas

    Christmas campaigns, holiday emails, gift guides

  • Lunar New Year

    Lunar New Year and Chinese New Year campaigns, red-envelope promos, greetings

  • Valentine

    Valentine's and Galentine's campaigns, cards, dating apps

Also known as

Other words people use for this icon. Each one finds it in the library search.

For developersCopy-paste code for HTML class, React, Vue, Svelte, Angular, Solid, Web component, SVG / CDN, Motion, AI & CLI

Pick your stack, install one package, paste the code. Name in code bauble · component Bauble

HTML class

One small loader script, then an <i> tag. The page downloads only the icons it shows, in any mix of styles. The icon takes the current text colour and font size.

  1. Paste it

    html
    <script src="https://cdn.jsdelivr.net/npm/@withicons/classes@latest/dist/with-loader.js" defer></script>
    
    <i class="with with-bauble"></i>              <!-- line -->
    <i class="with with-bauble with-solid"></i>   <!-- also with-duo, with-gloss, with-engrave, with-blueprint, with-sketch, with-glass, with-kawaii, with-sticker, with-pixel, with-retro, with-luxe, with-bauhaus, with-skeuo, with-anime, with-gothic, with-pastel, with-coquette, with-plush, with-clay, with-bento, with-suite, with-dock, with-liquid, with-chrome, with-soft3d, with-brutal, with-utsav, with-rangoli, with-halloween, with-christmas, with-lunar, with-valentine -->
Make it bigger or smallerfont size, a size class or an exact size

The icon is 1em square, so it follows the text size. Three ways to make it 48 px:

Font size also grows with the text around it

<i class="with with-bauble" style="font-size: 48px"></i>

A size class with-xs, with-sm, with-lg, with-2x to with-5x: times the text size

<i class="with with-bauble with-3x"></i>

An exact size whatever the text size

<i class="with with-bauble" style="--with-size: 48px"></i>

Setting only height does not work: the width stays 1em.

Good to know

The loader is about 6 KB gzipped and links just the CSS of the icons on the page (a line icon is about 270 bytes gzipped). No JavaScript? Link with-base.css and line/bauble.css from @withicons/classes yourself, or a whole style per file: with-line.css (all 734 line icons, about 26 KB gzipped). with-all.css (every style, about 6.3 MB gzipped) is for prototypes only. Add role="img" and aria-label when the icon carries meaning on its own.

React

Named import, tree-shaken. The package root is the line style; /solid, /duo, /gloss, /engrave, /blueprint, /sketch, /glass, /kawaii, /sticker, /pixel, /retro, /luxe, /bauhaus, /skeuo, /anime, /gothic, /pastel, /coquette, /plush, /clay, /bento, /suite, /dock, /liquid, /chrome, /soft3d, /brutal, /utsav, /rangoli, /halloween, /christmas, /lunar, and /valentine export the same names.

  1. Install

    npm i @withicons/react
  2. Use it

    jsx
    import { Bauble } from '@withicons/react'          // line (default style)
    import { Bauble as BaubleSolid } from '@withicons/react/solid'
    
    export function Example() {
      return (
        <>
          <Bauble size={24} />
          <BaubleSolid size={24} color="#FF5A36" title="Bauble" />
        </>
      )
    }
Make it bigger or smallerthe size prop

Use the size prop: a number in pixels, or any CSS length.

<Bauble size={48} />

Good to know

Props: size, color, strokeWidth, absoluteStrokeWidth, title, className. Deep import: @withicons/react/icons/bauble.

Vue

Vue 3 components with the same names, props and style subpaths.

  1. Install

    npm i @withicons/vue
  2. Use it

    vue
    <script setup>
    import { Bauble } from '@withicons/vue'          // line (default style)
    import { Bauble as BaubleSolid } from '@withicons/vue/solid'
    </script>
    
    <template>
      <Bauble :size="24" />
      <BaubleSolid :size="24" title="Bauble" />
    </template>
Make it bigger or smallerthe size prop

Use the size prop: a number in pixels, or any CSS length.

<Bauble :size="48" />

Svelte

Svelte components for Svelte 4 and 5.

  1. Install

    npm i @withicons/svelte
  2. Use it

    svelte
    <script>
      import { Bauble } from '@withicons/svelte'          // line (default style)
      import { Bauble as BaubleSolid } from '@withicons/svelte/solid'
    </script>
    
    <Bauble size={24} />
    <BaubleSolid size={24} title="Bauble" />
Make it bigger or smallerthe size prop

Use the size prop: a number in pixels, or any CSS length.

<Bauble size={48} />

Angular

One standalone <with-icon> component; pass the tree-shaken icon data.

  1. Install

    npm i @withicons/angular
  2. Use it

    ts
    import { Component } from '@angular/core'
    import { WithIconComponent, Bauble } from '@withicons/angular'
    
    @Component({
      selector: 'app-example',
      imports: [WithIconComponent],
      template: `<with-icon [icon]="Bauble" [size]="24" title="Bauble" />`,
    })
    export class ExampleComponent { Bauble = Bauble }
Make it bigger or smallerthe size input

Use the size input: a number in pixels, or any CSS length.

<with-icon [icon]="Bauble" [size]="48" />

Solid

SolidJS components (SSR and hydration ready).

  1. Install

    npm i @withicons/solid
  2. Use it

    tsx
    import { Bauble } from '@withicons/solid'          // line (default style)
    import { Bauble as BaubleSolid } from '@withicons/solid/solid'
    
    export const Example = () => <Bauble size={24} />
Make it bigger or smallerthe size prop

Use the size prop: a number in pixels, or any CSS length.

<Bauble size={48} />

Web component

A dependency-free custom element for any framework or plain HTML. Use variant for the style and label for an accessible name.

  1. Install

    npm i @withicons/web
  2. Use it

    html
    <script type="module" src="https://cdn.jsdelivr.net/npm/@withicons/web@latest/dist/cdn.js"></script>
    
    <with-icon name="bauble"></with-icon>
    <with-icon name="bauble" variant="solid" size="32" label="Bauble"></with-icon>
Make it bigger or smallerthe size attribute

Use size: pixels, or any CSS length.

<with-icon name="bauble" size="48"></with-icon>

Good to know

The page downloads only what it shows: about 7 KB gzipped for the element, then one small file per icon and style. Unique aliases resolve too: <with-icon name="ornament"> renders bauble.

SVG / CDN

Every style as a standalone 24×24 file. An <img> can’t inherit currentColor, so paste the markup inline when you need to recolour.

  1. Paste it

    svg
    <img src="https://cdn.jsdelivr.net/npm/@withicons/core@latest/dist/svg/line/bauble.svg" width="24" height="24" alt="Bauble">
    
    <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round"><path d="M9.75 6.85 A7.5 7.5 0 1 0 14.25 6.85"/><path d="M9.75 7 V5 A1 1 0 0 1 10.75 4 H13.25 A1 1 0 0 1 14.25 5 V7 Z" class="wm-a"/><path d="M10.75 4 C10.75 2 13.25 2 13.25 4" class="wm-a"/><path d="M4.95 11.5 C9.5 13.25 14.5 13.25 19.05 11.5" class="wm-a"/><path d="M5.1 16.75 C9.5 18.5 14.5 18.5 18.9 16.75" class="wm-a"/></svg>
Make it bigger or smallerwidth and height

Change width and height. SVG stays sharp at any size.

<img src="https://cdn.jsdelivr.net/npm/@withicons/core@latest/dist/svg/line/bauble.svg" width="48" height="48" alt="">

Motion

Optional animations, imported separately. They move the element around the icon, so they work with every style and every package. This icon’s own animation the ornament swings gently from its hook.

  1. Install

    npm i @withicons/motion
  2. Use it

    html
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@withicons/motion@latest/dist/motion.css">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@withicons/motion@latest/dist/icons/bauble.css">  <!-- this icon's own moves -->
    
    <!-- always moving: rock -->
    <span class="wm wm-loop" data-wm="bauble"><i class="with with-bauble"></i></span>
    
    <!-- moves when the button is hovered or focused: ring -->
    <button class="wm-trigger"><span class="wm wm-hover" data-wm="bauble"><i class="with with-bauble"></i></span> Bauble</button>
    
    <!-- click to turn bauble into christmas-tree: the button's aria-pressed decides the icon.
         Timing: --wm-swap-dur, --wm-swap-ease, --wm-swap-delay. On its own: wm-swap-auto (+ --wm-swap-hold) -->
    <button class="wm-trigger" type="button" aria-pressed="false" aria-label="Bauble"
            onclick="this.setAttribute('aria-pressed', this.getAttribute('aria-pressed') !== 'true')">
      <span class="wm-swap wm-fx-morph">
        <i class="with with-bauble wm-a"></i>
        <i class="with with-christmas-tree wm-b"></i>
      </span>
    </button>

Good to know

motion.css holds the presets (about 10 KB gzipped). Each icon’s own moves are a file of their own (about 0.3 KB gzipped); icons.css bundles all 734 (about 18 KB gzipped) for bundled apps. Pick another move with wm-p-<preset> (32 presets) and tune it with --wm-dur and --wm-k. JavaScript: import { motion, swap } from '@withicons/motion'. Everything stops for visitors who ask for reduced motion.

AI & CLI

Let your coding agent find and insert icons: the MCP server and CLI share the same search as this site.

  1. Run it

    shell
    npx -y @withicons/mcp                 # MCP server for Claude, Cursor, Copilot…
    npx withicons search "ornament"   # finds: bauble
    curl "https://withicons.com/api/search?q=ornament"

Questions about the Bauble icon

Free to use, easy to recolour, and ready for your slides or your code. All questions

Is the Bauble icon free to use?

Yes. The Bauble icon is free for personal and commercial work: presentations, documents, websites, apps, print and merchandise. It is released under the MIT license and you don’t need to credit anyone in your design.

How do I put the Bauble icon in Google Slides or PowerPoint?

On this page press Copy image, then paste it onto your slide. For PowerPoint, Keynote and Canva, Download SVG gives you a file that stays sharp at any size and can be recoloured inside the app.

Can I change the colour or size of the Bauble icon?

Yes. Pick a colour above before you download, choose a PNG size (64, 256 or 1024 pixels), or download the SVG, which scales to any size without getting blurry.

What is the Bauble icon also called?

People also search for it as “ornament”, “christmas ball”, “christmas ornament”, “xmas ball”, “tree ornament”, “decoration”, “xmas ornament”, “ball ornament”, “christmas”, or “xmas”. Its name in code is bauble.

Can I animate the Bauble icon?

Yes. Its built-in animation the ornament swings gently from its hook. Open Customize on this page, choose Always, On hover or Once, try any of the 32 moves, then download an animated SVG or copy the code. Animations come from the optional @withicons/motion package and switch off for people who ask for reduced motion.

How do I use the Bauble icon in React?

Run npm i @withicons/react, then import { Bauble } from '@withicons/react' and render <Bauble size={24} />. Import from @withicons/react/solid (or /duo, /gloss, /engrave, /blueprint, /sketch, /glass, /kawaii, /sticker, /pixel, /retro, /luxe, /bauhaus, /skeuo, /anime, /gothic, /pastel, /coquette, /plush, /clay, /bento, /suite, /dock, /liquid, /chrome, /soft3d, /brutal, /utsav, /rangoli, /halloween, /christmas, /lunar, or /valentine) for another style.