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.

Metadata

Release files for django-simple-icons 16.33.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-simple-icons 16.33.0
File Size Uploaded
django_simple_icons-16.33.0.tar.gz 2.6 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for django-simple-icons 16.33.0
File Interpreter ABI Platform
django_simple_icons-16.33.0-py3-none-any.whl Python 3 none any Details

Total release size: 5.3 MB

Release files / django_simple_icons-16.33.0.tar.gz

Download URL django_simple_icons-16.33.0.tar.gz
Size 2.6 MB
Tags Source
SHA-256 checksum
How to use checksums
aa6f9484c238bef9da37da494ba7ef8dd7f9d50d212c115e6f33645cf2eca34e
BLAKE2b-256 checksum
How to use checksums
8ef3043b56f6c0bdc355d8bd58bf1fe49bde0fbf76811cb64c75f9f1d7a96c6b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.

Transparency log

Release files / django_simple_icons-16.33.0-py3-none-any.whl

Download URL django_simple_icons-16.33.0-py3-none-any.whl
Size 2.6 MB
Tags Python 3
SHA-256 checksum
How to use checksums
483b5cd17115ba4342f9c0298556d77d122f26fb275dcb1c78a80a3ee29a8e78
BLAKE2b-256 checksum
How to use checksums
40fce6891b936fce66c1efe3914ccfe51e53e6483005afb636ecfeb23ae43377
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 28, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

16.33.0 This release

2 release 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