Skip to main content

Comparison and accessibility audit of Semantic, MUI and Carbon Design

Illustration depicting a three way box match as a way to communicate the concept of comparison between 3 component libraries; Semantic UI, MUI and Carbon Design System from an accessibility standpoint

About this study

We compared some popular component libraries that comes with very different messages: Semantic for being the “mature guy in the room”, MUI for customisability and community support, and finally, IBM’s Carbon Design for accessibility. We tested all of them and compared them head-to-head for your reading pleasure 😀 Of course, since we are an accessibility company, our tests and evaluation method is purely from an accessibility standpoint. We hope you enjoy and benefit from this work.


Component libraries included in the study

Definition: Accessibility ranking

Components are compared to each other and ranked amongst themselves based on their accessibility test findings.

Overall results and accessibility rankings

ComponentSemantic UIMUICarbon Design
Input321
Input with accessory21N/A
Textarea321
Date pickerN/A12
Dropdown231
SliderN/A21
Radio Group321
Checkbox Group231
Button321
Button with icon321
File uploaderN/AN/A1
Modal231
Accordion321
Chip132
Wizard312
ToggletipN/A21
Tooltip321
Tab Group312
Total 1st rankings1413
Total 2nd rankings494

Summary

Component librarySemantic UIMUICarbon Design
GenericSemantic UI components are old-school, and accessibility is poor on many components.Material Design look is appealing, especially since Flutter is used in app development. Although Material Design look gets more recognized every day, it still confuses iOS, iPadOS and macOS users who expect to see native-looking UI components.Carbon uses a non-conventional grid system called 2x. It is different than 12 column grids which mainstream UI frameworks use. This brings new possibilities but also limitations on how UI can be designed. Carbon has a strong focus, test procedures and roadmap for accessibility.
MaintainabilitySemantic UI has a comprehensive documentation for development. Developer API is simple to use and there is a large collection of components.MUI has a comprehensive documentation and a toolset for development. There is a large collection of components.Carbon is promising but immature from a developer’s perspective. Version 11 was recently released with breaking changes, and it is still under development (they release a new minor version every 1-2 weeks). Documentation for this version is partially incomplete/outdated. There are no type definitions for the latest version, which makes it difficult to develop if you are using Typescript.
SupportThere are 326 contributors for the project at GitHub.MUI has a paid premium support plan.It is supported by IBM, usually you get a response for GitHub issues in hours. There are 347 contributors in GitHub.
CommunityThere are 2,734 questions on Stack Overflow. 64% of them has an accepted answer.There are 19,815 questions on Stack Overflow. 60% of them has an accepted answer.Carbon is not a popular framework. There are only 48 questions asked on Stack Overflow and only a few of them has an answer.

Accessibility test results by component

Input

Inputs enables users to enter free-form text data.

Semantic UIMUICarbon Design
ComponentInputopens in new windowBasicTextFieldopens in new windowTextInputopens in new window
AppearanceSemantic UI TextboxMUI textboxCarbon Design Textbox
Accessibility FindingsINPSEUI-1 INPSEUI-2 INPSEUI-3INPMUI-1INPCADE-1 INPCADE-2
Accessibility Ranking321

Input with accessory

Inputs with accessory indicate what type of data is expected from the user.

Semantic UIMUICarbon Design
ComponentInputopens in new windowInput Adornmentsopens in new windowN/A
AppearanceSemantic UI Input with accessoryMUI Input with accessoryN/A
Accessibility FindingsINPESEUI-1INPESEUI-2INPESEUI-3INPESEUI-4INPEMUI-1INPEMUI-2N/A
Accessibility Ranking21N/A

Textarea

Textarea enables users to enter free-form text data,usually for longer texts.

Semantic UIMUICarbon Design
ComponentText Areaopens in new windowMultilineopens in new windowText areaopens in new window
AppearanceSemantic UI TextareaMUI Textarea MultilineCarbon Design Textarea
Accessibility FindingsTEXSEUI-1TEXSEUI-2TEXSEUI-3TEXMUI-1TEXCADE-1TEXCADE-2
Accessibility Ranking321

Date Picker

Date picker allows users to select a date.

Semantic UIMUICarbon Design
ComponentN/ADate Pickeropens in new windowDate Pickeropens in new window
AppearanceN/AMUI DatepickerCarbon Design Datepicker
Accessibility FindingsN/ADATMUI-1DATCADE-1 DATCADE-2 DATCADE-3
Accessibility RankingN/A12

Dropdown

Dropdowns present a list of options from which a user can select.

Semantic UIMUICarbon Design
ComponentDropdownopens in new windowSelectopens in new windowDropdownopens in new window
AppearanceSkandia UI DropdownMUI SelectCarbon Design Dropdown
Accessibility FindingsDROSEUI-1DROMUI-1 DROMUI-2 DROMUI-3 DROMUI-4DROCADE-1
Accessibility Ranking231

Slider

Slider provides a visual indication of adjustable content, where the user can increase or decrease the value by moving the handle along a horizontal track.

Semantic UIMUICarbon Design
ComponentN/ASlideropens in new windowSlideropens in new window
AppearanceN/AMUI SliderCarbon Design Slider
Accessibility FindingsN/ASLIMUI-1SLICADE-1
Accessibility RankingN/A21

Radio Group

Radio group presents a list of options where only one value from the list is allowed to be selected at any time.

Semantic UIMUICarbon Design
ComponentRadio Checkboxopens in new windowRadio Groupopens in new windowRadio Buttonopens in new window
AppearanceSemantic UI Radio GroupMUI Radio GroupCarbon Design Radio Group
Accessibility FindingsRADSEUI-1 RADSEUI-2 RADSEUI-3No issues are observedNo issues are observed
Accessibility Ranking321

Checkbox Group

Checkbox group presents a list of options where any number of values can be selected. Zero, one or all possible values and anything in between.

Semantic UIMUICarbon Design
ComponentCheckboxopens in new windowFormGroupopens in new windowCheckboxopens in new window
AppearanceSemantic UI Checkbox GroupMUI Checkbox GroupCarbon Design Checkbox Group
Accessibility FindingsNo issues are observedCHEMUI-1No issues are observed
Accessibility Ranking231

Button

Buttons are used to initialize an action. Button labels express what action will occur when the user interacts with it.

Semantic UIMUICarbon Design
ComponentButtonopens in new windowBasic Buttonopens in new windowButtonopens in new window
AppearanceSemantic UI ButtonMUI ButtonCarbon Design Button
Accessibility FindingsBUTSEUI-1BUTMUI-1No issues are observed
Accessibility Ranking321

Button with icon

Buttons are used to initialize an action. Button labels and icon express what action will occur when the user interacts with it.

Semantic UIMUICarbon Design
ComponentButton (Basic)opens in new windowButtons with icons and labelopens in new windowButtonopens in new window
AppearanceSemantic UI Button with IconMUI Button with IconCarbon Design Button with Icon
Accessibility FindingsBUTISEUI-1BUTIMUI-1No issues are observed
Accessibility Ranking321

File uploader

File uploaders allow users to select one or more files to upload to the website/app.

Semantic UIMUICarbon Design
ComponentN/AN/AFile uploaderopens in new window
AppearanceN/AN/ACarbon Design File Uploader
Accessibility FindingsN/AN/AFILCADE-1
Accessibility RankingN/AN/A1

Modal

Modals focuses the user’s attention exclusively on one task or piece of information via a window that sits on top of the page content.

Semantic UIMUICarbon Design
ComponentModalopens in new windowModalopens in new windowModalopens in new window
AppearanceSemantic UI ModalMUI ModalCarbon Design Modal
Accessibility FindingsMODSEUI-1 MODSEUI-2 MODESUI-3MODMUI-1No issues are observed
Accessibility Ranking231

Accordion

An accordion is a vertically stacked list of headers that reveal or hide associated sections of content.

Semantic UIMUICarbon Design
ComponentAccordionopens in new windowAccordionopens in new windowAccordionopens in new window
AppearanceSemantic UI AccordionMUI Accordion Carbon Design Accordion
Accessibility FindingsACCSEUI-1ACCMUI-1No issues are observed
Accessibility Ranking321

Chip

Chips are used to label, categorize, or organize items using keywords that describe them.

Semantic UIMUICarbon Design
ComponentLabelopens in new windowChipopens in new windowTagopens in new window
AppearanceSemantic UI ChipMUI ChipCarbon Design Chip
Accessibility FindingsCHISEUI-1CHIMUI-1No issues are observed
Accessibility Ranking132

Wizard

A wizard is a visual representation of a user’s progress through a set of steps, guiding toward the completion of a specific process.

Semantic UIMUICarbon Design
ComponentStepopens in new windowStepperopens in new windowProgress Indicatoropens in new window
AppearanceSemantic UI StepMUI StepperCarbon Design Progress Indicator
Accessibility FindingsWIZSEUI-1WIZMUI-1 WIZMUI-2 WIZMUI-3 WIZMUI-4WIZCADE-1
Accessibility Ranking312

Toggletip

Toggletips use the disclosure pattern to toggle the visibility of a popover.

Semantic UIMUICarbon Design
ComponentN/ATooltip (Triggers)opens in new windowToggletipopens in new window
AppearanceN/AMUI ToggletipCarbon Design Toggletip
Accessibility FindingsN/ATOGMUI-1No issues are observed
Accessibility RankingN/A21

Tooltip

Tooltips display additional information upon hover or focus. The information included should be contextual, helpful, and nonessential while providing that extra ability to communicate and give clarity to a user.

Semantic UIMUICarbon Design
ComponentPopupopens in new windowTooltipopens in new windowTooltipopens in new window
AppearanceSemantic UI TooltipMUI TooltipCarbon Design Tooltip
Accessibility FindingsTOOSEUI-1TOOMUI-1No issues are observed
Accessibility Ranking321

Tab Group

Tabs are used to organize related content. They allow the user to navigate between groups of information that appear within the same context.

Semantic UIMUICarbon Design
ComponentTabopens in new windowTabsopens in new windowTabsopens in new window
AppearanceSemantic Tab GroupMUI Tab GroupCarbon Design Tabs
Accessibility FindingsTABSEUI-1No issues are observedNo issues are observed
Accessibility Ranking312

Finding Details

Input

Semantic UI

INPSEUI-1

A visual label needs to be provided. The HTML5 placeholder attribute in a text input does not replace the label element. Please refer to W3C research about placeholders and labels. Screenshot of INPSEUI-1

INPSEUI-2

A standard input component keyboard focus border needs to have sufficient color contrast. (Background color: #ffffff, border-color: #85B7D9). The current color contrast is 2.1:1, and the expected contrast ratio is 3:1. Screenshot of INPSEUI-2

INPSEUI-3

A standard input component border needs to have sufficient color contrast. (Background color: #ffffff, border color: #DEDEDF). The current color contrast is 1.3:1, and the expected contrast ratio is 3:1. Screenshot of INPSEUI-3

MUI

INPMUI-1

The “Basic TextField” component needs a border. Without a border or a background color, it’s difficult to understand this object is an input field with a single bottom-border alone, especially if the user is not familiar with Material Design/Android look and feel. Screenshot of INPMUI-1

Carbon Design

INPCADE-1

The text input field’s placeholder text needs to have sufficient color contrast. (Background color: #F4F4F4, border-color: #9B9B9B). The current color contrast is 2.5:1, and the expected contrast ratio is 3:1. Screenshot of INPCADE-1

INPCADE-2

Inside the “Text input,” the background color does not have sufficient color contrast (Foreground color code: #F4F4F4 background color code: #FFFFFF). The current color contrast is 1.1:1, the expected color contrast is 3:1, and the component does not have an all-around border. Therefore, it will negatively impact partially sighted or color-blind users. Screenshot of INPCADE-2

Input with accessory

Semantic UI

INPESEUI-1

A visual label needs to be provided. The HTML5 placeholder attribute in a text input does not replace the label element. Please refer to W3C research about placeholders and labels. Screenshot of INPESEUI-1

INPESEUI-2

The input component keyboard focuses border needs sufficient color contrast. (Background color: #ffffff, border-color: #85B7D9). The current color contrast is 2.1:1, and the expected contrast ratio is 3:1. Screenshot of INPESEUI-2

INPESEUI-3

The input component border needs to have sufficient color contrast. (Background color: #ffffff, border-color: #DEDEDF). The current color contrast is 1.3:1, and the expected contrast ratio is 3:1. Screenshot of INPESEUI-3

INPESEUI-4

Screen Readers must narrate the base label name and input(Labeled) component label in both focus and form mode. For example, in the screenshot below, when the screen reader lands on the “Enter weight” input(labeled) field, the screen reader narrates, “Enter weight edit selected 34” But the screen reader should narrate, “Enter weight edit selected 34 kg.” Screenshot of INPESEUI-4

MUI

INPEMUI-1

The Input Adornments component border needs to have sufficient color contrast. (Background color: #ffffff, border color: #E7EBF0). The current color contrast is 1.2:1, and the expected contrast ratio is 3:1. Screenshot of INPEMUI-1

INPEMUI-2

Screen Readers must narrate the base label name and “Input Adornments” component label in focus and form mode. For example, in the screenshot below, when the screen reader lands on the “Weight” Input Adornments field, the screen reader narrates, “Weight edit selected 34,” But the screen reader should narrate, “Weight edit selected 34 kg.” Screenshot of INPEMUI-2

Textarea

Semantic UI

TEXSEUI-1

The Text Area component border needs to have sufficient color contrast. (Background color: #ffffff, border-color: #DEDEDF). The current color contrast is 1.3:1, and the expected contrast ratio is 3:1. Screenshot of TEXSEUI-1

TEXSEUI-2

The Text Area component keyboard focus border needs sufficient color contrast. (Background color: #ffffff, border-color: #85B7D9). The current color contrast is 2.1:1, and the expected contrast ratio is 3:1. Screenshot of TEXSEUI-2

TEXSEUI-3

In both focus and form mode, Screen Readers are not narrating the label name when Screen Reader focus lands on the “Text area” component because the label has not programmatically mapped the respective text area component. Screenshot of TEXSEUI-3

MUI

TEXMUI-1

The multiline component border needs to have sufficient color contrast. (Background color: #ffffff, border color: #C4C4C4). The current color contrast is 1.7:1, and the expected contrast ratio is 3:1. Screenshot of TEXMUI-1

Carbon Design

TEXCADE-1

The text area field’s placeholder text needs to have sufficient color contrast. (Background color: #F4F4F4, border-color: #A9A9A). The current color contrast is 2.1:1, and the expected contrast ratio is 3:1. Screenshot of TEXCADE-1

TEXCADE-2

Inside the “Text area,” the background color does not have sufficient color contrast (Foreground color code: #F3F3F3 background color code: #FFFFFF). The current color contrast is 1.1:1, the expected color contrast is 3:1, and the component does not have an all-around border. Therefore, it will negatively impact partially sighted or color-blind users. Screenshot of TEXCADE-2

Date Picker

MUI

DATMUI-1

The Date Picker component border needs to have sufficient color contrast. (Background color: #ffffff, border-color: #C4C4C4). The current color contrast is 1.7:1, and the expected contrast ratio is 3:1. Screenshot of DATMUI-1

Carbon Design

DATCADE-1

The Date Picker component border needs to have sufficient color contrast. (Background color: #F4F4F4, foreground color: #9B9B9B). The current color contrast is 2.5:1, and the expected contrast ratio is 3:1. Screenshot of DATCADE-1

DATCADE-2

Inside the “Date picker label field,” the background color does not have sufficient color contrast (Foreground color code: #F4F4F4 background color code: #FFFFFF). The current color contrast is 1.1:1, the expected color contrast is 3:1, and the component does not have an all-around border. Therefore, it will negatively impact partially sighted or color-blind users. Screenshot of DATCADE-2

DATCADE-3

In the Date Picker component, shortcut keys are not working. Please refer to the WCAG date picker shortcut key access example.

Dropdown

Semantic UI

DROSEUI-1

The Dropdown component border needs to have sufficient color contrast. (Background color: #ffffff, border color: #B2B2B2). The current color contrast is 2.1:1, and the expected contrast ratio is 3:1

MUI

DROMUI-1

Screen readers must narrate the options list in both scan and focus mode.

DROMUI-2

Screen readers must narrate the list count and position state (Selected) in both scan and focus mode.

DROMUI-3

Screen readers are not narrating the Helper text when the screen reader focus lands on the “Select” component. Screenshot of DROMUI-3

DROMUI-4

The Select component border needs to have sufficient color contrast. (Background color: #ffffff, border color: #E7EBF0). The current color contrast is 1.2:1, and the expected contrast ratio is 3:1. Screenshot of DROMUI-4

Carbon Design

DROCADE-1

Inside the “Dropdown,” the background color does not have sufficient color contrast (Foreground color code: #F4F4F4 background color code: #FFFFFF). The current color contrast is 1.1:1, the expected color contrast is 3:1, and the component does not have an all-around border. Therefore, it will negatively impact partially sighted or color-blind users. Screenshot of DROCADE-1

Slider

MUI

SLIMUI-1

Visual label not provided for slider component. Visible labels to identify all form controls. In most cases, this is done by using the <label> element. Screenshot of SLIMUI-1

Carbon Design

SLICADE-1

Inside the “Slider,” the background color does not have sufficient color contrast (Foreground color code: #F4F4F4 background color code: #FFFFFF). The current color contrast is 1.1:1, the expected color contrast is 3:1, and the component does not have an all-around border. Therefore, it will negatively impact partially sighted or color-blind users. Screenshot of SLICADE-1

Radio Group

Semantic UI

RADSEUI-1

The “Radio Checkbox” component’s legend is not defined programmatically in the legend tag. As a result, screen readers are not able to narrate the legend when the screen reader focus lands on the radio button.

RADSEUI-2

Screen readers are not narrating the “Radio Checkbox” component’s label information in scan and focus mode.

RADSEUI-3

Screen readers narrate the invalid radio button count in the “Radio Checkbox” component. Screenshot of RADSEUI-3

Checkbox Group

MUI

CHEMUI-1

Screen readers are not narrating the element’s help text when the screen reader focus lands on the first checkbox. The execrated behaviour is when the screen reader lands on the first check box, it should narrate the legend, label name, and help text along with the checkbox role and state.

Button

Semantic UI

BUTSEUI-1

Very weak way to display focus. Color change is almost non-noticable and there is no border. Screenshot of BUTSEUI-1

MUI

BUTMUI-1

The “Button” component keyboard focus needs to have sufficient color contrast. (Background color: #BAD6F1, foreground color: #237CD4). The current color contrast is 2.8:1, and the expected contrast ratio is 3:1. Screenshot of BUTMUI-1

Button with icon

Semantic UI

BUTISEUI-1

The ” Button basic” component border needs to have sufficient color contrast. (Background color: #FFFFF, foreground color: #DEDEDF). The current color contrast is 1.3:1, and the expected contrast ratio is 3:1. Screenshot of BUTISEUI-1

MUI

BUTIMUI-1

The ” Buttons with icons and label” component keyboard focus needs to have sufficient color contrast. (Background color: #BAD6F1, foreground color: #237CD4). The current color contrast is 2.8:1, and the expected contrast ratio is 3:1. Screenshot of BUTIMUI-1

File uploader

Carbon Design

FILCADE-1

Screen readers are not narrating the help text or descriptive file format information. Screenshot of FILCADE-1

Modal

Semantic UI

MODSEUI-1

After activating the “Modal” component keyboard focus moves to background elements. Screenshot of MODSEUI-1

MODSEUI-2

Screen readers are not narrating the “Modal” component information. Screenshot of MODSEUI-2

MODSEUI-3

Headings are not defined programmatically in the side modal window component. As a result, screen readers are not narrating the Modal component heading information. Screenshot of MODSEUI-3

MUI

MODMUI-1

Screen readers are not narrating the “Modal” dialog information when the modal component is opened. Screenshot of MODMUI-1

Accordion

Semantic UI

ACCSEUI-1

By using the keyboard unable to access and navigate the “Accordion” component. Please refer WCAG example in given link https://www.w3.org/WAI/ARIA/apg/example-index/accordion/accordion

MUI

ACCMUI-1

A keyboard focus border should be required, along with a color change for a better focus keyboard indicator.

Chip

Semantic UI

CHISEUI-1

Alternative texts are not provided for icons. Alt attributes enable screen readers to read the information about on-page images/icons for the benefit of a person with a complete lack of sight, who is visually impaired, or who is otherwise unable to view the images on the page. Currently, screen readers are narrating “23”. And The expected screen reader narration is “Email 23”. Screenshot of CHISEUI-1

MUI

CHIMUI-1

Provide the descriptive <title> text to describe the SVG image purpose. Here, <title> tag enables screen readers to read the information about on-page images/icons for the benefit of a person with a complete lack of sight, who is visually impaired, or who is otherwise unable to view the images on the page. Screenshot of CHIMUI-1

Wizard

Semantic UI

WIZSEUI-1

“Step” component items are not defined in the list. As a result, users relying on screen readers cannot identify the wizard items count in scan mode. Please refer WCAG example https://www.w3.org/WAI/tutorials/forms/multi-page/

MUI

WIZMUI-1

“Stepper” component items are not defined in the list. As a result, users relying on screen readers cannot identify the wizard items count in scan mode. Please refer WCAG example https://www.w3.org/WAI/tutorials/forms/multi-page/

WIZMUI-2

The “Stepper” component keyboard focuses border needs sufficient color contrast. (Background color: #5E9FE0, Foreground color: #FFFFFF). The current color contrast is 2.8:1, and the expected contrast ratio is 3:1. Screenshot of WIZMUI-2

WIZMUI-3

The keyboard focus order is not logical after activating the “Back” button. After pressing the “Back” button, the keyboard focus moves to the next element instead of the Previous step’s interactive element.

WIZMUI-4

In the “Stepper” component step section, headings are not defined in the heading tag. As a result, users relying on screen readers will have difficulty understanding the content structure. Screenshot of WIZMUI-4

Carbon Design

WIZCADE-1

Unconventional icons conveying the status of each step, in progress, invalid, completed etc. Changing icons is difficult.

Toggletip

MUI

TOGMUI-1

The screen reader narrates the help text immediately when the screen reader focus lands on the “Tooltip (Triggers)” component. However, after activating the “Tooltips (Triggers)” component, the screen reader is not narrating any information.

Tooltip

Semantic UI

TOOSEUI-1

By using the keyboard unable to access/navigate the “Popup” component. Screen readers do not narrate the element’s name and role.

MUI

TOOMUI-1

The screen reader narrates the help text immediately when the screen reader focus lands on the “Tooltip” component. However, after activating the “Tooltips” component, the screen reader is not narrating any information.

Tab Group

Semantic UI

TABSEUI-1

By using the keyboard tab key unable to navigate the “Tab” component.