Bộ nhớ chỉ đọc (ROM) là một loại bộ nhớ không thay đổi được sử dụng trong máy tính và các thiết bị điện tử khác. Dữ liệu được lưu trữ trong ROM không thể được sửa đổi bằng điện tử sau khi sản xuất. Bộ nhớ chỉ đọc hữu ích cho việc lưu trữ phần mềm hiếm khi thay đổi trong suốt vòng đời của hệ thống, đôi khi được gọi là phần sụn (firmware). Các ứng dụng phần mềm cho các thiết bị lập trình có thể được phân phối dưới dạng các hộp mực bổ trợ có chứa bộ nhớ chỉ đọc (băng trò chơi video game).
Bộ nhớ chỉ đọc có thể lập trình xóa được (EPROM) và bộ nhớ chỉ đọc có thể lập trình xóa được bằng điện (EEPROM) có thể được xóa và lập trình lại, nhưng thông thường chỉ có thể được thực hiện ở tốc độ tương đối chậm, có thể cần thiết bị đặc biệt để thực hiện, và chỉ có thể một sửa đổi số lần nhất định.
Thuật ngữ "ROM" đôi khi được sử dụng để chỉ một thiết bị ROM có chứa phần mềm hoặc một tệp có phần mềm được lưu trữ trong EEPROM hoặc Flash Memory. Ví dụ: người dùng sửa đổi hệ điều hành Android gọi các tệp chứa hệ điều hành đã sửa đổi là "ROM tùy chỉnh" (Custom ROM).
ROM sử dụng để lưu trữ chương trình BIOS.
Mọi chương trình được lưu trữ có thể sử dụng một dạng lưu trữ cố định trên ROM (nghĩa là dữ liệu của nó không bị mất khi bị ngắt nguồn) để lưu trữ chương trình ban đầu khởi chạy khi máy tính được bật hoặc bắt đầu thực thi (một quá trình được gọi là bootstrapping, thường được viết tắt là "booting" hoặc "booting up").
Các dạng bộ nhớ chỉ đọc được sử dụng làm bộ lưu trữ không mất dữ liệu cho các chương trình trong hầu hết các máy tính, chẳng hạn như ENIAC từ năm 1948. Bộ nhớ chỉ đọc thực hiện nó đơn giản hơn vì nó chỉ cần một cơ chế để đọc các giá trị được lưu trữ, và không thay đổi chúng, và do đó có thể được thực hiện với các thiết bị điện tử thô (xem các ví dụ lịch sử bên dưới). Với sự ra đời của các mạch tích hợp vào những năm 1960, cả ROM và RAM có thể thay đổi đã được triển khai dưới dạng các mảng bóng bán dẫn trong chip silicon; tuy nhiên, một ô nhớ ROM có thể được sản xuất bằng cách sử dụng ít bóng bán dẫn hơn một ô nhớ SRAM. Do đó, ROM có thể được sản xuất với chi phí thấp hơn so với RAM trong nhiều năm.
Hầu hết các máy tính gia đình của những năm 1980 đã lưu trữ một trình thông dịch BASIC hoặc hệ điều hành trong ROM vì các hình thức lưu trữ không mất dữ liệu khác như ổ đĩa từ là quá tốn kém. Ví dụ, Commodore 64 bao gồm 64 KB RAM và 20 KB ROM chứa trình thông dịch BASIC và "kernel" (hạt nhân) của hệ điều hành. Các máy tính gia đình hoặc văn phòng sau này như IBM PC XT thường bao gồm các ổ đĩa từ và dung lượng RAM lớn hơn, cho phép chúng tải hệ điều hành từ ổ cứng vào RAM, chỉ còn một chương trình khởi động phần cứng tối thiểu trong ROM (được gọi là BIOS trong các máy tính tương thích IBM). Cơ chế này cho phép chạy các hệ điều hành phức tạp hơn và dễ dàng nâng cấp hơn.
Trong các PC hiện đại, "ROM" (hoặc flash) được sử dụng để lưu trữ phần cứng khởi động (firmware) cơ bản cho bộ xử lý chính, cũng như các phần firmware khác nhau cần thiết để điều khiển các thiết bị độc lập như card đồ họa, đĩa cứng, ổ đĩa DVD, màn hình, v.v.. trong hệ thống. Ngày nay, nhiều bộ nhớ "chỉ đọc" này - đặc biệt là BIOS - thường được thay thế bằng bộ nhớ Flash (xem bên dưới), để cho phép lập trình lại khi cần nâng cấp firmware. Tuy nhiên, các hệ thống phụ đơn giản (chẳng hạn như bàn phím hoặc một số bộ điều khiển giao tiếp trong các mạch tích hợp trên bo mạch chính chẳng hạn) có thể sử dụng ROM (lập trình một lần).
ROM và các công nghệ kế thừa như flash là phổ biến trong các hệ thống nhúng. Chúng có trong mọi thứ, từ robot công nghiệp đến thiết bị gia dụng, điện tử tiêu dùng và IoT internet vạn vật (máy nghe nhạc MP3, hộp giải mã set-top-box, v.v.) tất cả đều được thiết kế cho các chức năng cụ thể, nhưng dựa trên bộ vi xử lý đa năng. Với phần mềm thường được kết hợp chặt chẽ với phần cứng, các thay đổi chương trình hiếm khi cần thiết trong các thiết bị đó (thường không trang bị ổ cứng vì lý do chi phí, kích thước hoặc mức tiêu thụ điện năng). Kể từ năm 2008, hầu hết các sản phẩm đều sử dụng Flash thay vì ROM và nhiều sản phẩm cung cấp một số cổng để kết nối với PC cho phần sụn (firmware) cập nhật; ví dụ, trình phát âm thanh kỹ thuật số có thể được cập nhật để hỗ trợ định dạng tệp mới. Một số người có sở thích đã tận dụng sự linh hoạt này để lập trình lại các sản phẩm tiêu dùng cho mục đích mới; ví dụ, các dự án iPodLinux và OpenWrt đã cho phép người dùng chạy các bản phân phối Linux đầy đủ tính năng trên máy nghe nhạc MP3 và bộ định tuyến không dây của họ.
ROM cũng hữu ích cho việc lưu trữ dữ liệu mật mã, vì nó khiến chúng khó thay đổi, điều này có thể được sử dụng để tăng cường bảo mật thông tin.
Vì ROM không thể được sửa đổi (hoặc khó sửa đổi), nên nó chỉ phù hợp để lưu trữ dữ liệu mà dự kiến sẽ không cần sửa đổi nhiều trong suốt vòng đời của thiết bị. Cuối cùng, ROM đã được sử dụng trong nhiều máy tính để lưu trữ các bảng tra cứu để đánh giá các hàm toán học và logic (ví dụ: một đơn vị dấu phẩy động có thể lập bảng hàm sin để tạo điều kiện tính toán nhanh hơn). Điều này đặc biệt hiệu quả với CPU chậm và ROM rẻ hơn so với RAM.
Đáng chú ý, bộ xử lý hình ảnh màn hình của các máy tính ban đầu lưu trữ các bảng ký tự phông chữ bitmap trong ROM. Điều này thường có nghĩa là phông chữ hiển thị văn bản không thể thay đổi tương tác. Đây là trường hợp cho cả bộ điều hợp CGA và MDA có sẵn với IBM PC XT.
Việc sử dụng ROM để lưu trữ một lượng nhỏ dữ liệu như vậy đã biến mất gần như hoàn toàn trong các máy tính đa năng hiện đại. Tuy nhiên, Flash ROM đã đảm nhận vai trò mới là phương tiện để lưu trữ hàng loạt hoặc lưu trữ thứ cấp các tệp.
Một dạng phổ biến hiện dùng là Bộ nhớ flash, gọi đơn giản là Flash, dùng với cả tư cách EEPROM lẫn trong Ổ USB flash.