Skip to main content

django-simple-icons

PyPI version Python versions CI

Use Simple Icons, more than 3,400 SVG brand icons, in your Django and Jinja templates. The icons ship inside the package, so there is no CDN to call and no static files to collect. Each icon renders as inline SVG that follows the surrounding text color.

Installation

Install with the extra matching your template engine:

python -m pip install 'django-simple-icons[django]'
python -m pip install 'django-simple-icons[jinja]'

The package itself has no runtime dependencies and needs Python 3.12 or later.

Django

Add the app to INSTALLED_APPS so the template tag library can be loaded:

INSTALLED_APPS = [
    ...,
    "django_simple_icons",
]

Then load the library and render an icon by its slug:

{% load simple_icons %}

{% simple_icon "django" %}

That produces a 24x24 inline SVG which inherits the current text color and is hidden from screen readers:

<svg viewBox="0 0 24 24" width="24" height="24" fill="currentColor" aria-hidden="true"><path d="M11.146 0h3.924…"/></svg>

Sizing

size sets both width and height and defaults to 24:

{% simple_icon "django" size=48 %}

Pass size=None to omit both attributes, which is what you want when CSS classes control the size:

{% simple_icon "django" size=None class="h-6 w-6" %}

Color

Icons use fill="currentColor" by default, so they follow the surrounding text. Pass color="brand" to use the brand's official color, or any CSS color to set it directly:

{% simple_icon "django" color="brand" %}
{% simple_icon "django" color="#ff6600" %}

Extra attributes

Any other keyword argument becomes an attribute on the <svg> element, with underscores converted to dashes:

{% simple_icon "django" class="h-6 w-6 text-green-700" data_controller="icon" %}
<svg viewBox="0 0 24 24" width="24" height="24" fill="currentColor" aria-hidden="true" class="h-6 w-6 text-green-700" data-controller="icon"><path d="M11.146 0h3.924…"/></svg>

Values are escaped, so data_test="a < 2" renders as data-test="a &lt; 2".

Accessibility

Icons are decorative by default, so the upstream <title> is removed and aria-hidden="true" is set. An icon next to a text label needs nothing more.

For a standalone icon that carries meaning, pass title=True to keep the brand name as the accessible name, or pass a string to replace it:

{% simple_icon "django" title=True %}
{% simple_icon "django" title="Django framework" %}

Either form keeps role="img" and drops aria-hidden:

<svg role="img" viewBox="0 0 24 24" width="24" height="24" fill="currentColor"><title>Django framework</title><path d="M11.146 0h3.924…"/></svg>

Jinja

Register the function as a global on your environment:

from django_simple_icons.jinja import simple_icon

environment.globals["simple_icon"] = simple_icon

Call it with the same arguments as the Django tag:

{{ simple_icon("django") }}
{{ simple_icon("django", size=48, color="brand") }}
{{ simple_icon("django", title="Django framework") }}

The result is a markupsafe.Markup, so it renders unescaped under autoescaping.

Because class is a reserved word in Python, spell it class_ when calling the function directly. The trailing underscore is stripped:

{{ simple_icon("django", class_="h-6 w-6") }}

Arguments

Argument Default Description
name required The icon slug, such as "django"
size 24 Sets width and height; None omits both
color "currentColor" Any CSS color, or "brand" for the brand's official color
title False True keeps the brand name, a string replaces it
**attrs none Extra attributes; underscores become dashes

Brand colors

get_brand_color returns a brand's official color, which is useful outside a template:

>>> from django_simple_icons import get_brand_color
>>> get_brand_color("django")
'#092E20'

Finding icon slugs

Slugs match the names on simpleicons.org, where you can search the full set. An unknown slug raises IconDoesNotExist with suggestions:

>>> from django_simple_icons import get_brand_color
>>> get_brand_color("djngo")
Traceback (most recent call last):
  ...
django_simple_icons.IconDoesNotExist: Icon 'djngo' does not exist. Did you mean: django, deno, fandango? Browse the available icons at https://simpleicons.org/

Supported versions

  • Python 3.12, 3.13 and 3.14
  • Django 5.2, 6.0 and 6.1 are tested. Django is declared as >=4.2 because the code uses nothing newer, but only the tested versions are supported.
  • Jinja2 2.8 and later

Versioning

The package version mirrors the bundled Simple Icons release, so version 16.26.0 contains Simple Icons 16.26.0. A fix to this package that ships no new icons appends a fourth segment, such as 16.26.0.1.

License

The code in this package is MIT licensed. The icons come from Simple Icons and are CC0-1.0.

Brand icons and names are trademarks of their respective owners. Using an icon does not imply endorsement, and some brands restrict how their marks may be used. Read the Simple Icons legal disclaimer before shipping an icon.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_simple_icons-16.28.0.tar.gz (2.6 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_simple_icons-16.28.0-py3-none-any.whl (2.6 MB view details)

Uploaded Python 3

File details

Details for the file django_simple_icons-16.28.0.tar.gz.

File metadata

  • Download URL: django_simple_icons-16.28.0.tar.gz
  • Upload date:
  • Size: 2.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for django_simple_icons-16.28.0.tar.gz
Algorithm Hash digest
SHA256 5a735512d772c3475015efbb706347eb3a6985e80a92d4bb32e6a71d53a5c63e
MD5 f79a571f9a60697de5ec09648b4ac46f
BLAKE2b-256 15d494d0c89a1d3ca5030f93124d238f48047a070ec535ef90f82b71ecdc409a

See more details on using hashes here.

Provenance

The following attestation bundles were made for django_simple_icons-16.28.0.tar.gz:

Publisher: main.yml on M4p4/django-simple-icons

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file django_simple_icons-16.28.0-py3-none-any.whl.

File metadata

File hashes

Hashes for django_simple_icons-16.28.0-py3-none-any.whl
Algorithm Hash digest
SHA256 38f723d1e546e7e6916ef75d59514eee3bba4990641ce04aaf755a4c5f9d5323
MD5 300879a2da5b5314092ec10f070586f6
BLAKE2b-256 146721f46e4faf0c21269e2749a9948d1ba8713f2256b2e02217082c3f33cc6c

See more details on using hashes here.

Provenance

The following attestation bundles were made for django_simple_icons-16.28.0-py3-none-any.whl:

Publisher: main.yml on M4p4/django-simple-icons

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

16.29.0

2 files

This release

16.28.0 This release

2 files

16.27.0

2 files

16.26.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page