<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/using-the-linux-kernel-s-case-insensitive-feature-in-ext4-i5dzaee0s" -->

---
title: Using the Linux kernel's Case-insensitive feature in Ext4
description: Linux 5.2 introduced native case-insensitive file name lookups in the Ext4 filesystem via the casefold feature, later adopted by f2fs. The feature uses UTF-8...
canonical: https://daily.dev/posts/using-the-linux-kernel-s-case-insensitive-feature-in-ext4-i5dzaee0s
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Using the Linux kernel's Case-insensitive feature in Ext4 | daily.dev
og:description: Linux 5.2 introduced native case-insensitive file name lookups in the Ext4 filesystem via the casefold feature, later adopted by f2fs. The feature uses UTF-8...
og:url: https://daily.dev/posts/using-the-linux-kernel-s-case-insensitive-feature-in-ext4-i5dzaee0s
og:image: https://api.daily.dev/og/posts/I5dzAee0S.png
og:image:alt: Using the Linux kernel's Case-insensitive feature in Ext4
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Using the Linux kernel's Case-insensitive feature in Ext4

**[Collabora Blog](https://daily.dev/sources/collabora)** · 11 min read · 0 upvotes · 0 comments

## Summary

Linux 5.2 introduced native case-insensitive file name lookups in the Ext4 filesystem via the casefold feature, later adopted by f2fs. The feature uses UTF-8 (up to Unicode 12.1) and operates at the directory level rather than filesystem-wide, minimizing impact on existing applications. Enabling it requires building the kernel with CONFIG_UNICODE=y, formatting with mkfs using the casefold option, and then setting the +F inode attribute on specific directories with chattr. A strict mode rejects invalid UTF-8 filenames. The implementation supports canonical decomposition normalization, allowing equivalent Unicode representations (e.g., accented characters, German Eszett) to match interchangeably. The primary motivation is compatibility with Windows games running via Steam on Linux, where applications cannot be recompiled to handle case-sensitive filesystems.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.collabora.com/news-and-blog/blog/2020/08/27/using-the-linux-kernel-case-insensitive-feature-in-ext4>

## Questions this post answers

### How do I enable case-insensitive file lookups in an Ext4 filesystem on Linux?

Enabling case-insensitive Ext4 requires two steps. First, format the volume with the casefold feature: `mkfs -t ext4 -O casefold /dev/vda`. Second, set the +F inode attribute on any directory you want to be case-insensitive: `chattr +F CI_dir`. The kernel must be built with CONFIG_UNICODE=y, and only UTF-8 up to Unicode 12.1 is supported. The feature is per-directory, not filesystem-wide.

_Developers configuring Linux filesystems for gaming or cross-platform compatibility track kernel feature updates like this on daily.dev._

### What is the strict mode in Ext4 case-insensitive and how do I enable it?

Strict mode in Ext4 case-insensitive causes the kernel to reject any attempt to create or rename a file with an invalid UTF-8 name, returning an error to the application. Without strict mode, invalid names are silently treated as opaque byte sequences. Enable it at format time with: `mkfs -t ext4 -O casefold -E encoding_flags=strict /dev/vda`. The flag is reflected in dmesg as flags 0x1 instead of 0x0.

_Teams building Linux storage solutions can follow Ext4 and kernel filesystem changes on daily.dev._

### Does the Ext4 casefold flag apply recursively to subdirectories?

Yes, the Casefold flag (+F) recurses into nested directories automatically. Any subdirectory created inside a casefolded directory inherits the case-insensitive attribute. However, it is possible to override this by explicitly removing the +F attribute from a specific subdirectory using `chattr -F`, allowing mixed case-sensitive and case-insensitive directories within the same tree.

_Developers working with Linux filesystem hierarchies find nuanced behavior like this covered on daily.dev._

## Similar posts on daily.dev

- [Linux 7.2 To Better Communicate File-System Casefolding For Helping Windows NFS & More](https://daily.dev/posts/linux-7-2-to-better-communicate-file-system-casefolding-for-helping-windows-nfs-more-ixp0ekx2h) · Phoronix · 0 upvotes · 0 comments
- [Linux Enacts Guidance To Tighten Acceptance Of New File-Systems Into The Kernel](https://daily.dev/posts/linux-enacts-guidance-to-tighten-acceptance-of-new-file-systems-into-the-kernel-qifusx1an) · Phoronix · 2 upvotes · 0 comments
- [Linux 7.3 Corrects Faulty Behavior Of FAT File-System Driver For Filenames Too Fat](https://daily.dev/posts/linux-7-3-corrects-faulty-behavior-of-fat-file-system-driver-for-filenames-too-fat-zpdtofvpr) · Phoronix · 1 upvotes · 0 comments
- [Don’t stop early: Case-folding source code at memory speed](https://daily.dev/posts/don-t-stop-early-case-folding-source-code-at-memory-speed-0kmr0gljo) · GitHub Blog · 3 upvotes · 0 comments

---

Tags: [#linux](https://daily.dev/tags/linux), [#filesystems](https://daily.dev/tags/filesystems)

[View this post on daily.dev](https://daily.dev/posts/using-the-linux-kernel-s-case-insensitive-feature-in-ext4-i5dzaee0s)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Using the Linux kernel's Case-insensitive feature in Ext4","url":"https://daily.dev/posts/using-the-linux-kernel-s-case-insensitive-feature-in-ext4-i5dzaee0s","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/using-the-linux-kernel-s-case-insensitive-feature-in-ext4-i5dzaee0s"},"datePublished":"2026-08-11T08:53:43.741Z","dateModified":"2026-08-11T09:14:32.836Z","description":"Linux 5.2 introduced native case-insensitive file name lookups in the Ext4 filesystem via the casefold feature, later adopted by f2fs. The feature uses UTF-8...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/0e9879e3990ad48ccf6f9078b27cb5c9?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/0e9879e3990ad48ccf6f9078b27cb5c9?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Collabora Blog","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Collabora Blog","logo":"https://media.daily.dev/image/upload/s--ZGZ0FjqS--/f_auto,q_auto/v1786438306/logos/collabora?_a=BAMAMicg0","url":"https://daily.dev/sources/collabora"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/using-the-linux-kernel-s-case-insensitive-feature-in-ext4-i5dzaee0s","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"linux,filesystems","timeRequired":"PT11M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Collabora Blog","item":"https://daily.dev/sources/collabora"},{"@type":"ListItem","position":3,"name":"Using the Linux kernel's Case-insensitive feature in Ext4"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/using-the-linux-kernel-s-case-insensitive-feature-in-ext4-i5dzaee0s#faq","mainEntity":[{"@type":"Question","name":"How do I enable case-insensitive file lookups in an Ext4 filesystem on Linux?","acceptedAnswer":{"@type":"Answer","text":"Enabling case-insensitive Ext4 requires two steps. First, format the volume with the casefold feature: `mkfs -t ext4 -O casefold /dev/vda`. Second, set the +F inode attribute on any directory you want to be case-insensitive: `chattr +F CI_dir`. The kernel must be built with CONFIG_UNICODE=y, and only UTF-8 up to Unicode 12.1 is supported. The feature is per-directory, not filesystem-wide. Developers configuring Linux filesystems for gaming or cross-platform compatibility track kernel feature updates like this on daily.dev."}},{"@type":"Question","name":"What is the strict mode in Ext4 case-insensitive and how do I enable it?","acceptedAnswer":{"@type":"Answer","text":"Strict mode in Ext4 case-insensitive causes the kernel to reject any attempt to create or rename a file with an invalid UTF-8 name, returning an error to the application. Without strict mode, invalid names are silently treated as opaque byte sequences. Enable it at format time with: `mkfs -t ext4 -O casefold -E encoding_flags=strict /dev/vda`. The flag is reflected in dmesg as flags 0x1 instead of 0x0. Teams building Linux storage solutions can follow Ext4 and kernel filesystem changes on daily.dev."}},{"@type":"Question","name":"Does the Ext4 casefold flag apply recursively to subdirectories?","acceptedAnswer":{"@type":"Answer","text":"Yes, the Casefold flag (+F) recurses into nested directories automatically. Any subdirectory created inside a casefolded directory inherits the case-insensitive attribute. However, it is possible to override this by explicitly removing the +F attribute from a specific subdirectory using `chattr -F`, allowing mixed case-sensitive and case-insensitive directories within the same tree. Developers working with Linux filesystem hierarchies find nuanced behavior like this covered on daily.dev."}}]}
```

