Recherche avancée

Médias (3)

Mot : - Tags -/pdf

Autres articles (36)

  • MediaSPIP version 0.1 Beta

    16 avril 2011, par

    MediaSPIP 0.1 beta est la première version de MediaSPIP décrétée comme "utilisable".
    Le fichier zip ici présent contient uniquement les sources de MediaSPIP en version standalone.
    Pour avoir une installation fonctionnelle, il est nécessaire d’installer manuellement l’ensemble des dépendances logicielles sur le serveur.
    Si vous souhaitez utiliser cette archive pour une installation en mode ferme, il vous faudra également procéder à d’autres modifications (...)

  • MediaSPIP 0.1 Beta version

    25 avril 2011, par

    MediaSPIP 0.1 beta is the first version of MediaSPIP proclaimed as "usable".
    The zip file provided here only contains the sources of MediaSPIP in its standalone version.
    To get a working installation, you must manually install all-software dependencies on the server.
    If you want to use this archive for an installation in "farm mode", you will also need to proceed to other manual (...)

  • Amélioration de la version de base

    13 septembre 2013

    Jolie sélection multiple
    Le plugin Chosen permet d’améliorer l’ergonomie des champs de sélection multiple. Voir les deux images suivantes pour comparer.
    Il suffit pour cela d’activer le plugin Chosen (Configuration générale du site > Gestion des plugins), puis de configurer le plugin (Les squelettes > Chosen) en activant l’utilisation de Chosen dans le site public et en spécifiant les éléments de formulaires à améliorer, par exemple select[multiple] pour les listes à sélection multiple (...)

Sur d’autres sites (3961)

  • Dump WebRTC stream to a file

    20 novembre 2014, par Mondain

    I’d like to capture the audio and video from a WebRTC stream to a file or pair of files, if audio and video require their own individual files. The audio and video are not muxed together and are known to be available on a set of server udp ports :

    Port   Encoding
    5000 - VP8 video
    5001 - RTCP (for video)
    5002 - Opus audio @48kHz 2 channels
    5003 - RTCP (for audio)
    

    The SDP file / data is not available and DTLS may be used.

    I would prefer to use avconv or ffmpeg to capture the stream, unless a better tool is suggested.

    Edit : I’ve found that this as inquired will most likely not work. Until I hear otherwise, none of these tools support the initial DTLS handshake followed by the data transmission via SRTP.

  • Gstreamer channel reordering failed

    31 octobre 2017, par user972851

    I installed the library essentia which causes my previously working pipeline to crash :

    ** (gst-launch-1.0:22515): CRITICAL **: gst_audio_reorder_channels: assertion 'size % ((info->width * channels) / 8) == 0' failed
    ERROR: from element /GstPipeline:pipeline0/GstRtpL16Depay:rtpl16depay0: Channel reordering failed.
    Additional debug info:
    gstrtpL16depay.c(276): gst_rtp_L16_depay_process (): /GstPipeline:pipeline0/GstRtpL16Depay:rtpl16depay0

    The pipeline looks like this :

    udpsrc port=5000 ! application/x-rtp,media=(string)audio,channels=1, clock-rate=(int)44100,encoding-name=(string)L16,payload=10 ! rtpL16depay ! audioconvert ! tee name=t ! queue ! autoaudiosink sync=false t. ! queue ! appsink name=codesink

    I am using gstreamer 1.0 on Ubuntu 16.04 and (re-)installed the libraries mentioned in the essentia doc :

    build-essential libyaml-dev libfftw3-dev libavcodec-dev libavformat-dev libavutil-dev libavresample-dev python-dev libsamplerate0-dev libtag1-dev
    python-numpy-dev python-numpy python-yaml
    ffmpeg

    The essentia install script finished ’successfully’ even though I cannot find MonoLoader or any other Audioloader.... (so still something wrong with essentia as well, but thats not the main problem !)


    Cleaned out parts of the gstreamer debug log look like this :

    0:00:00.149495849 [334m22515[00m       0xd96a00 [37mDEBUG  [00m [00;01;36m  GST_PLUGIN_LOADING gstplugin.c:1549:gst_plugin_ext_dep_scan_dir_and_match_names:<plugin106>[00m g_dir_open(/dev/v4l2) failed: Error opening directory '/dev/v4l2': No such file or directory
    0:00:00.149807870 [334m22515[00m       0xd96a00 [37mDEBUG  [00m [00;01;36m  GST_PLUGIN_LOADING gstplugin.c:1549:gst_plugin_ext_dep_scan_dir_and_match_names:<plugin223>[00m g_dir_open(/home/xxx/.frei0r-1/lib) failed: Error opening directory '/home/xxx/.frei0r-1/lib': No such file or directory
    0:00:00.149823765 [334m22515[00m       0xd96a00 [37mDEBUG  [00m [00;01;36m  GST_PLUGIN_LOADING gstplugin.c:1549:gst_plugin_ext_dep_scan_dir_and_match_names:<plugin223>[00m g_dir_open(/usr/lib/x86_64-linux-gnu/frei0r-1) failed: Error opening directory '/usr/lib/x86_64-linux-gnu/frei0r-1': No such file or directory
    0:00:00.149836069 [334m22515[00m       0xd96a00 [37mDEBUG  [00m [00;01;36m  GST_PLUGIN_LOADING gstplugin.c:1549:gst_plugin_ext_dep_scan_dir_and_match_names:<plugin223>[00m g_dir_open(/usr/lib/frei0r-1) failed: Error opening directory '/usr/lib/frei0r-1': No such file or directory
    0:00:00.149847527 [334m22515[00m       0xd96a00 [37mDEBUG  [00m [00;01;36m  GST_PLUGIN_LOADING gstplugin.c:1549:gst_plugin_ext_dep_scan_dir_and_match_names:<plugin223>[00m g_dir_open(/usr/local/lib/frei0r-1) failed: Error opening directory '/usr/local/lib/frei0r-1': No such file or directory
    0:00:00.149859202 [334m22515[00m       0xd96a00 [37mDEBUG  [00m [00;01;36m  GST_PLUGIN_LOADING gstplugin.c:1549:gst_plugin_ext_dep_scan_dir_and_match_names:<plugin223>[00m g_dir_open(/usr/lib32/frei0r-1) failed: Error opening directory '/usr/lib32/frei0r-1': No such file or directory
    0:00:00.149870221 [334m22515[00m       0xd96a00 [37mDEBUG  [00m [00;01;36m  GST_PLUGIN_LOADING gstplugin.c:1549:gst_plugin_ext_dep_scan_dir_and_match_names:<plugin223>[00m g_dir_open(/usr/local/lib32/frei0r-1) failed: Error opening directory '/usr/local/lib32/frei0r-1': No such file or directory
    0:00:00.149881462 [334m22515[00m       0xd96a00 [37mDEBUG  [00m [00;01;36m  GST_PLUGIN_LOADING gstplugin.c:1549:gst_plugin_ext_dep_scan_dir_and_match_names:<plugin223>[00m g_dir_open(/usr/lib64/frei0r-1) failed: Error opening directory '/usr/lib64/frei0r-1': No such file or directory
    0:00:00.149893070 [334m22515[00m       0xd96a00 [37mDEBUG  [00m [00;01;36m  GST_PLUGIN_LOADING gstplugin.c:1549:gst_plugin_ext_dep_scan_dir_and_match_names:<plugin223>[00m g_dir_open(/usr/local/lib64/frei0r-1) failed: Error opening directory '/usr/local/lib64/frei0r-1': No such file or directory

    0:00:00.186559327 [334m22515[00m       0xf93a80 [33;01mWARN   [00m [00m         rtpL16depay gstrtpL16depay.c:276:gst_rtp_L16_depay_process:<rtpl16depay0>[00m error: Channel reordering failed.
    0:00:00.186574584 [334m22515[00m       0xf93a80 [37mDEBUG  [00m [00;01;37;41m         GST_MESSAGE gstelement.c:1848:gst_element_message_full:<rtpl16depay0>[00m start
    0:00:00.186589070 [334m22515[00m       0xf93a80 [36mINFO   [00m [00;01;31;47m    GST_ERROR_SYSTEM gstelement.c:1879:gst_element_message_full:<rtpl16depay0>[00m posting message: Channel reordering failed.
    0:00:00.186619665 [334m22515[00m       0xf93a80 [33;01mWARN   [00m [00m           structure gststructure.c:1935:priv_gst_structure_append_to_gstring:[00m No value transform to serialize field 'gerror' of type 'GError'
    0:00:00.186613247 [334m22515[00m       0xf93a80 [37mDEBUG  [00m [00;43m             GST_BUS gstbus.c:311:gst_bus_post:<bus1>[00m [msg 0xfc44c0] posting on bus error message: 0xfc44c0, time 99:99:99.999999999, seq-num 59, element 'rtpl16depay0', GstMessageError, gerror=(GError)NULL, debug=(string)"gstrtpL16depay.c\(276\):\ gst_rtp_L16_depay_process\ \(\):\ /GstPipeline:pipeline0/GstRtpL16Depay:rtpl16depay0";
    0:00:00.186641091 [334m22515[00m       0xf93a80 [37mDEBUG  [00m [00;01m                 bin gstbin.c:3533:gst_bin_handle_message_func:<pipeline0>[00m [msg 0xfc44c0] handling child rtpl16depay0 message of type error
    0:00:00.186649484 [334m22515[00m       0xf93a80 [37mDEBUG  [00m [00;01m                 bin gstbin.c:3540:gst_bin_handle_message_func:<pipeline0>[00m got ERROR message, unlocking state change
    0:00:00.186656312 [334m22515[00m       0xf93a80 [37mDEBUG  [00m [00;01m                 bin gstbin.c:3870:gst_bin_handle_message_func:<pipeline0>[00m posting message upward
    0:00:00.186665962 [334m22515[00m       0xf93a80 [33;01mWARN   [00m [00m           structure gststructure.c:1935:priv_gst_structure_append_to_gstring:[00m No value transform to serialize field 'gerror' of type 'GError'
    0:00:00.186662657 [334m22515[00m       0xf93a80 [37mDEBUG  [00m [00;43m             GST_BUS gstbus.c:311:gst_bus_post:<bus2>[00m [msg 0xfc44c0] posting on bus error message: 0xfc44c0, time 99:99:99.999999999, seq-num 59, element 'rtpl16depay0', GstMessageError, gerror=(GError)NULL, debug=(string)"gstrtpL16depay.c\(276\):\ gst_rtp_L16_depay_process\ \(\):\ /GstPipeline:pipeline0/GstRtpL16Depay:rtpl16depay0";
    0:00:00.186688725 [334m22515[00m       0xf93a80 [37mDEBUG  [00m [00;43m             GST_BUS gstbus.c:350:gst_bus_post:<bus2>[00m [msg 0xfc44c0] pushing on async queue
    0:00:00.186706354 [334m22515[00m       0xf93a80 [37mDEBUG  [00m [00;43m             GST_BUS gstbus.c:353:gst_bus_post:<bus2>[00m [msg 0xfc44c0] pushed on async queue
    0:00:00.186713847 [334m22515[00m       0xf93a80 [37mDEBUG  [00m [00;43m             GST_BUS gstbus.c:346:gst_bus_post:<bus1>[00m [msg 0xfc44c0] dropped
    0:00:00.186720541 [334m22515[00m       0xf93a80 [36mINFO   [00m [00;01;31;47m    GST_ERROR_SYSTEM gstelement.c:1902:gst_element_message_full:<rtpl16depay0>[00m posted error message: Channel reordering failed.
    0:00:00.186729277 [334m22515[00m       0xf93a80 [37mDEBUG  [00m [00;01;34m          GST_MEMORY gstmemory.c:87:_gst_memory_free:[00m free memory 0x7f7780004b80
    0:00:00.186737518 [334m22515[00m       0xf93a80 [37mDEBUG  [00m [00;01;35m      GST_SCHEDULING gstpad.c:4192:gst_pad_chain_data_unchecked:[00m called chainfunction &amp;0x7f77a1a9ae00 with buffer 0x7f7780016060, returned ok
    0:00:00.186746868 [334m22515[00m       0xf93a80 [37mDEBUG  [00m [00;01;35m      GST_SCHEDULING gstpad.c:4192:gst_pad_chain_data_unchecked:[00m called chainfunction &amp;gst_base_transform_chain with buffer 0x7f7780016060, returned ok
    0:00:00.186734973 [334m22515[00m       0xd96a00 [37mDEBUG  [00m [00;43m             GST_BUS gstbus.c:523:gst_bus_timed_pop_filtered:<bus2>[00m got message 0xfc44c0, error from rtpl16depay0, type mask is 4294967295
    0:00:00.186759208 [334m22515[00m       0xf93a80 [37mDEBUG  [00m [00m             basesrc gstbasesrc.c:2456:gst_base_src_get_range:<udpsrc0>[00m calling create offset 18446744073709551615 length 4096, time 0
    0:00:00.186808915 [334m22515[00m       0xf93a80 [37mDEBUG  [00m [00;01;34m          GST_MEMORY gstmemory.c:138:gst_memory_init:[00m new memory 0x7f7780017ae0, maxsize:901 offset:0 size:894
    0:00:00.186812210 [334m22515[00m       0xd96a00 [33;01mWARN   [00m [00m           structure gststructure.c:1935:priv_gst_structure_append_to_gstring:[00m No value transform to serialize field 'gerror' of type 'GError'
    0:00:00.186798035 [334m22515[00m       0xd96a00 [37mDEBUG  [00m [00;43m             GST_BUS gstbus.c:791:gst_bus_source_dispatch:<bus2>[00m source 0xfc0b60 calling dispatch with error message: 0xfc44c0, time 99:99:99.999999999, seq-num 59, element 'rtpl16depay0', GstMessageError, gerror=(GError)NULL, debug=(string)"gstrtpL16depay.c\(276\):\ gst_rtp_L16_depay_process\ \(\):\ /GstPipeline:pipeline0/GstRtpL16Depay:rtpl16depay0";


    0:00:00.187438285 [334m22515[00m       0xf93a80 [33;01mWARN   [00m [00m         rtpL16depay gstrtpL16depay.c:276:gst_rtp_L16_depay_process:<rtpl16depay0>[00m error: Channel reordering failed.

    0:00:00.187861496 [334m22515[00m       0xf93a80 [36mINFO   [00m [00;01;31;47m    GST_ERROR_SYSTEM gstelement.c:1879:gst_element_message_full:<rtpl16depay0>[00m posting message: Channel reordering failed.
    0:00:00.187870817 [334m22515[00m       0xd96a00 [37mDEBUG  [00m [00;01;31m          GST_STATES gstelement.c:2523:gst_element_set_state_func:<autoaudiosink0>[00m set_state to PAUSED
    0:00:00.187917831 [334m22515[00m       0xd96a00 [37mDEBUG  [00m [00;01;31m          GST_STATES gstelement.c:2561:gst_element_set_state_func:<autoaudiosink0>[00m current READY, old_pending PAUSED, next PAUSED, old return ASYNC
    0:00:00.187926145 [334m22515[00m       0xd96a00 [37mDEBUG  [00m [00;01;31m          GST_STATES gstelement.c:2615:gst_element_set_state_func:<autoaudiosink0>[00m element was busy with async state change
    0:00:00.187931662 [334m22515[00m       0xf93a80 [33;01mWARN   [00m [00m           structure gststructure.c:1935:priv_gst_structure_append_to_gstring:[00m No value transform to serialize field 'gerror' of type 'GError'
    0:00:00.187932562 [334m22515[00m       0xd96a00 [36mINFO   [00m [00;01;31m          GST_STATES gstbin.c:2770:gst_bin_change_state_func:<pipeline0>[00m child 'autoaudiosink0' is changing state asynchronously to PAUSED
    0:00:00.187919799 [334m22515[00m       0xf93a80 [37mDEBUG  [00m [00;43m             GST_BUS gstbus.c:311:gst_bus_post:<bus1>[00m [msg 0xfc4540] posting on bus error message: 0xfc4540, time 99:99:99.999999999, seq-num 60, element 'rtpl16depay0', GstMessageError, gerror=(GError)NULL, debug=(string)"gstrtpL16depay.c\(276\):\ gst_rtp_L16_depay_process\ \(\):\ /GstPipeline:pipeline0/GstRtpL16Depay:rtpl16depay0";
    0:00:00.187957346 [334m22515[00m       0xd96a00 [37mDEBUG  [00m [00;01m                 bin gstbin.c:2182:gst_bin_sort_iterator_next:<pipeline0>[00m queue head gives queue0
    0:00:00.187965818 [334m22515[00m       0xf93a80 [37mDEBUG  [00m [00;01m                 bin gstbin.c:3533:gst_bin_handle_message_func:<pipeline0>[00m [msg 0xfc4540] handling child rtpl16depay0 message of type error
    0:00:00.187975510 [334m22515[00m       0xd96a00 [37mDEBUG  [00m [00;01m                 bin gstbin.c:882:find_message:<pipeline0>[00m no message found matching types 00001000
    0:00:00.187996861 [334m22515[00m       0xd96a00 [37mDEBUG  [00m [00;01m                 bin gstbin.c:889:find_message:<pipeline0>[00m   structure-change
    0:00:00.188003444 [334m22515[00m       0xd96a00 [37mDEBUG  [00m [00;01m                 bin gstbin.c:2098:update_degree:<pipeline0>[00m change element audioconvert0, degree 1->0, linked to queue0
    0:00:00.188010702 [334m22515[00m       0xd96a00 [37mDEBUG  [00m [00;01m                 bin gstbin.c:1981:add_to_queue:<pipeline0>[00m adding 'audioconvert0' to queue
    0:00:00.188019716 [334m22515[00m       0xd96a00 [36mINFO   [00m [00;01;31m          GST_STATES gstbin.c:2316:gst_bin_element_set_state:<queue0>[00m current PLAYING pending VOID_PENDING, desired next PAUSED
    0:00:00.188021589 [334m22515[00m       0xf93a80 [37mDEBUG  [00m [00;01m                 bin gstbin.c:3540:gst_bin_handle_message_func:<pipeline0>[00m got ERROR message, unlocking state change

    0:00:00.188204142 [334m22515[00m       0xf93a80 [33;01mWARN   [00m [00m           structure gststructure.c:1935:priv_gst_structure_append_to_gstring:[00m No value transform to serialize field 'gerror' of type 'GError'

    0:00:00.188196343 [334m22515[00m       0xf93a80 [37mDEBUG  [00m [00;43m             GST_BUS gstbus.c:311:gst_bus_post:<bus2>[00m [msg 0xfc4540] posting on bus error message: 0xfc4540, time 99:99:99.999999999, seq-num 60, element 'rtpl16depay0', GstMessageError, gerror=(GError)NULL, debug=(string)"gstrtpL16depay.c\(276\):\ gst_rtp_L16_depay_process\ \(\):\ /GstPipeline:pipeline0/GstRtpL16Depay:rtpl16depay0";

    0:00:00.188532703 [334m22515[00m       0xf93a80 [36mINFO   [00m [00;01;31;47m    GST_ERROR_SYSTEM gstelement.c:1902:gst_element_message_full:<rtpl16depay0>[00m posted error message: Channel reordering failed.

    0:00:00.199466751 [334m22515[00m       0xd96a00 [37mDEBUG  [00m [00;43m             GST_BUS gstbus.c:523:gst_bus_timed_pop_filtered:<bus2>[00m got message 0xfc4540, error from rtpl16depay0, type mask is 4294967295

    0:00:00.203389413 [334m22515[00m       0xd96a00 [37mDEBUG  [00m [00;01;36m  GST_PLUGIN_LOADING gstpluginfeature.c:66:gst_plugin_feature_finalize:[00m finalizing feature 0xf69ea0: 'errorignore'
    </bus2></rtpl16depay0></bus2></pipeline0></queue0></pipeline0></pipeline0></pipeline0></pipeline0></pipeline0></pipeline0></bus1></pipeline0></autoaudiosink0></autoaudiosink0></autoaudiosink0></rtpl16depay0></rtpl16depay0></bus2></udpsrc0></bus2></rtpl16depay0></bus1></bus2></bus2></bus2></pipeline0></pipeline0></pipeline0></bus1></rtpl16depay0></rtpl16depay0></rtpl16depay0></plugin223></plugin223></plugin223></plugin223></plugin223></plugin223></plugin223></plugin223></plugin106>
  • How (and Why) to Run a Web Accessibility Audit in 2024

    7 mai 2024, par Erin

    When most businesses design their websites, they primarily think about aesthetics, not accessibility. However, not everyone who visits your website has the same abilities or access needs. Eight percent of the US population has visual impairments.

    The last thing you want is to alienate website visitors with a bad experience because your site isn’t up to accessibility standards. (And with growing international regulation, risk fines or lawsuits as a result.)

    A web accessibility audit can help you identify and fix any issues for users with impaired vision, hearing or other physical disabilities. In this article, we’ll cover how to conduct such an audit efficiently for your website in 2024.

    What is a web accessibility audit ?

    A web accessibility audit is a way to evaluate the usability of your website for users with visual, auditory or physical impairments, as well as cognitive disabilities or neurological issues. The goal is to figure out how accessible your website is to each of these affected groups and solve any issues that come up.

    To complete an audit, you use digital tools and various manual accessibility testing processes to ensure your site meets modern web accessibility standards.

    Why is a web accessibility audit a must in 2024 ?

    For far too long, many businesses have not considered the experiences of those with disabilities. The growing frustrations of affected internet users have led to a new focus on web accessibility laws and enforcement.

    Lawsuits related to the ADA (Americans with Disabilities Act) reached all-time highs in 2023 — over 4,500 digital-related lawsuits were filed. The EU has also drawn up the European Accessibility Act (EAC), which goes into effect in June 2025.

    But at the end of the day, it’s not about accessibility legislation. It’s about doing right by people.

    Illustration of a sight-impaired person using text-to-speech to browse a website on a smartphone

    This video by voice actor, YouTuber, and surfer Pete Gustin demonstrates why accessibility measures are so important. If buttons, navigation and content sections aren’t properly labelled, sight-impaired people who rely on speech-to-text to browse the web can’t comfortably interact with your site.

    And you’re worse off for it. You can lose some of your best customers and advocates this way. 

    With stronger enforcement of accessibility regulations in the US and new regulations coming into effect in the EU in 2025, the time to act is now. It’s not enough to “keep accessibility in mind” — you must take concrete steps to improve it.

    Who should lead a web accessibility audit ?

    Ideally, you want to hire a third-party web accessibility expert to lead the audit. They can guide you through multiple stages of manual accessibility testing to ensure your site meets regulations and user needs. 

    Experienced accessibility auditors are familiar with common pitfalls and can help you avoid them. They ensure you meet the legal requirements with proper solutions, not quick fixes.

    If this isn’t an option, find someone with relevant experience within your company. And involve someone with “skin in the game” in the process. Hire someone with visual impairments to usability test your site. Don’t just do automated tests or “put yourself in their shoes.” Make sure the affected users can use your site without issues.

    Automated vs. manual audits and the danger of shortcuts

    While there are automated audits, they only check for the bare minimum :

    • Do your images have alt tags ? (They don’t check if the alt tag is descriptive or just SEO junk text.)
    • Are clickable buttons identified with text for visually impaired users ?
    • Is your text size adjustable ?
    • Are your background and foreground colours accessible for colour-blind users ? Is there a sufficient contrast ratio ?
    Illustration of the results of an automated accessibility test

    They don’t dive into the user journey (and typically can’t access login-locked parts of your site). They can be a good starting point, but it’s a bad idea to rely completely on automated audits.

    They’ll miss more complex issues like :

    • Dynamic content and animated elements or videos that could put people with epilepsy at risk of seizures
    • A navigational flow that is unnecessarily challenging for users with impairments
    • Video elements without proper captions

    So, don’t rely too much on automated tests and audits. Many lawsuits for ADA infractions are against companies that think they’ve already solved the problem. For example, 30% of 2023 lawsuits were against sites that used accessibility overlays.

    Key elements of the Web Content Accessibility Guidelines (WCAG)

    The international standard for web accessibility is the Web Content Accessibility Guidelines (WCAG). In the most recent version, WCAG 2.2, there are new requirements for visual elements and focus and other updates.

    Here’s a quick overview of the key priorities of WCAG :

    Diagram of core WCAG considerations like text scalability, colour choices, accessible navigation, and more

    Perceivable : Any user can read or listen to your site’s content

    The first priority is for any user to be able to perceive the actual content on your site. To be compliant, you need to make these adjustments and more :

    • Use text that scales with browser settings.
    • Avoid relying on colour contrasts to communicate something.
    • Ensure visual elements are explained in text.
    • Offer audio alternatives for things like CAPTCHA.
    • Form fields and interactive elements are properly named.

    Operable : Any user can navigate the site and complete tasks without issue

    The second priority is for users to navigate your website and complete tasks. Here are some of the main considerations for this section :

    • Navigation is possible through keyboard and text-to-speech interfaces.
    • You offer navigation tools to bypass repeated blocks of content.
    • Buttons are properly titled and named.
    • You give impaired users enough time to finish processes without timing out.
    • You allow users to turn off unnecessary animations (and ensure none include three flashes or more within one second).
    • Links have a clear purpose from their alt text (and context).

    Understandable : Any user can read and understand the content

    The third priority is making the content understandable. You need to communicate as simply and as clearly as possible. Here are a few key points :

    • Software can determine the default language of each page.
    • You use a consistent method to explain jargon or difficult terms.
    • You introduce the meaning of unfamiliar abbreviations and acronyms.
    • You offer tools to help users double-check and correct input.
    • The reading grade is not higher than grade 9. If it is, you must offer an alternative text with a lower grade.
    • Use consistent and predictable formatting and navigation.

    This intro to accessibility guidelines should help you see the wide range of potential accessibility issues. Accessibility is not just about screen readers — it’s about ensuring a good user experience for users with a wide range of disabilities.

    Note : If you’re not hiring a third-party expert for the manual accessibility audit, this introduction isn’t enough. You need to familiarise yourself with all 50 success criteria in WCAG 2.2.

    How to do your first web accessibility audit

    Ready to find and fix the accessibility issues across your website ? Follow the steps outlined below to do a successful accessibility audit.

    Start with an automated accessibility test

    To point you in the right direction, start with a digital accessibility checker. There are many free alternatives, including :

    • Accessibility Checker
    • Silktide accessibility checker
    • AAArdvark

    When choosing a tool, check it’s up-to-date with the newest accessibility guidelines. Many accessibility evaluation tools are still based on the WCAG 2.1 version rather than WCAG 2.2.

    The tool will give you a basic evaluation of the accessibility level of your site. A free report can quickly identify common issues with navigation, labelling, colour choices and more. 

    But this is only good as a starting point. Remember that even paid versions of these testing tools are limited and cannot replace a manual audit.

    Look for common issues

    The next step is to manually look for common issues that impact your site’s level of accessibility :

    • Undescriptive alt text
    • Colour combinations (and lack of ability to change background and foreground colours)
    • Unscalable text
    • Different site content sections that are not properly labelled

    The software you use to create your site can lead to many of these issues. Is your content management system (CMS) compliant with ADA or WCAG ? If not, you may want to move to a CMS before continuing the audit.

    Pinpoint customer journeys and test them for accessibility 

    After you’ve fixed common issues, it’s essential to put the actual customer journey to the test. Explore your most important journeys with behavioural analytics tools like session recordings and funnel analysis.

    Analysing funnel reports lets you quickly identify each page that usually contributes to a sale. You will also have an overview of the most popular funnels to evaluate for accessibility.

    If your current web analytics platform doesn’t offer behavioural reports like these, Matomo can help. Our privacy-friendly web analytics solution includes funnel reports, session recordings, A/B testing, form analytics, heatmaps and more.

    Try Matomo for Free

    Get the web insights you need, without compromising data accuracy.

    No credit card required

    If you don’t have the budget to test every page individually, this is the perfect place to start. You want to ensure that users with disabilities have no issues completing the main tasks on your site. 

    Don’t focus solely on your web pages 

    Accessibility barriers can also exist outside of your standard web pages. So ensure that other file formats like PDFs and videos are also accessible. 

    Remember that downloadable materials are also part of your digital experience. Always consider the needs of individuals with disabilities when accessing things like case studies or video tutorials. 

    Highlight high-priority issues in a detailed report

    To complete the audit, you need to summarise and highlight high-priority issues. In a larger company, this will be in the form of a report. W3’s Web Accessibility Initiative offers a free accessibility report template and an online tool to generate a report.

    For smaller teams, it may make sense to input issues directly into the product backlog or a task list. Then, you can tackle the issues, starting with high-priority pages identified earlier in this process.

    Avoid quick fixes and focus on sustainable improvement

    As mentioned, AI-powered overlay solutions aren’t compliant and put you at risk for lawsuits. It’s not enough to install a quick accessibility tool and pat yourself on the back.

    And it’s not just about accessibility compliance. These solutions provide a disjointed experience that alienates potential users. 

    The point of a digital accessibility audit is to identify issues and provide a better experience to all your users. So don’t try to cut corners. Do the work required to implement solutions that work seamlessly for everyone. Invest in a long-term accessibility remediation process.

    Deliver a frictionless experience while gaining insight into your users

    An accessibility audit is crucial to ensure an inclusive experience — that a wide variety of users can read and interact with your site.

    But what about the basic usability of your website ? Are you sure the experience is without friction ? Matomo’s behavioural analytics tools can show how users interact with your website.

    For example, heatmaps can show you where users are clicking — which can help you identify a pattern, like many users mistaking a visual element for a button.

    Plus, our privacy-friendly web analytics are compliant with GDPR, CCPA and other data privacy regulations. That helps protect you against privacy-related lawsuits, just as an accessibility audit protects you against ADA lawsuits.

    And it never hurts that your users know you respect their privacy. Try Matomo free for 21-days. No credit card required.