Skip to main content

All rules

  • aria_role: Elements with ARIA roles must use a valid, non-abstract ARIA role
  • django_forms_rendering: Disallows using Django’s convenience form rendering helpers, for which the markup isn’t screen-reader-friendly
  • html_has_lang: <html> elements must have a lang attribute, using a BCP 47 language tag.
  • image_alt: <img> elements must have a alt attribute, either with meaningful text, or an empty string for decorative images
  • indent: Enforce consistent indentation
  • meta_viewport: The viewport meta tag should not use user-scalable=no, and maximum-scale should be 2 or above, so end users can zoom
  • no_autofocus: Enforce autofocus is not used on inputs. Autofocusing elements can cause usability issues for sighted and non-sighted users.
  • tabindex_no_positive: Prevents using positive tabindex values, which are very easy to misuse with problematic consequences for keyboard users.

Try them all#

Here is a sample configuration with all of Curlylint’s rules enabled. Note this isn’t a recommended configuration, just a convenient way to try it all at once:

# All role attributes must be valid.
# See
aria_role = true
# Forms cannot be rendered with as_table, as_ul, or as_p
# See
django_forms_rendering = true
# The `lang` attribute must be present.
# See
html_has_lang = true
# The `alt` attribute must be present.
# See
image_alt = true
# Use tabs.
# See
indent = "tab"
# `user-scalable=no` must not be used, and `maximum-scale` should be 2 or above.
# See
meta_viewport = true
# The `autofocus` attribute must not be used.
# See
no_autofocus = true
# Avoid positive `tabindex` values, change the order of elements on the page instead.
# See
tabindex_no_positive = true