diff --git a/app/controllers/admin/communication/website/home_controller.rb b/app/controllers/admin/communication/website/home_controller.rb
index 59ce01e0ac6e1b8455081adb1d94389cb0b405f7..abad549c17dec8c3a0deb45dd5a30051ffebf3df 100644
--- a/app/controllers/admin/communication/website/home_controller.rb
+++ b/app/controllers/admin/communication/website/home_controller.rb
@@ -24,6 +24,9 @@ class Admin::Communication::Website::HomeController < Admin::Communication::Webs
 
   def home_params
     params.require(:communication_website_home)
-          .permit(:text, :featured_image, :featured_image_delete, :featured_image_infos)
+          .permit(
+            :text, :featured_image, :featured_image_delete,
+            :featured_image_infos, :featured_image_alt
+          )
   end
 end
diff --git a/app/controllers/admin/communication/website/pages_controller.rb b/app/controllers/admin/communication/website/pages_controller.rb
index d996b0be41d07e9c148dfe9b265cf00252c905e4..01390214993d5d4c82a29de54431ba2342b26c8b 100644
--- a/app/controllers/admin/communication/website/pages_controller.rb
+++ b/app/controllers/admin/communication/website/pages_controller.rb
@@ -85,7 +85,7 @@ class Admin::Communication::Website::PagesController < Admin::Communication::Web
     params.require(:communication_website_page)
           .permit(:communication_website_id, :title,
             :description, :text, :about_type, :about_id, :slug, :published,
-            :featured_image, :featured_image_delete, :featured_image_infos,
+            :featured_image, :featured_image_delete, :featured_image_infos, :featured_image_alt,
             :parent_id, :related_category_id)
           .merge(university_id: current_university.id)
   end
diff --git a/app/controllers/admin/communication/website/posts_controller.rb b/app/controllers/admin/communication/website/posts_controller.rb
index f5bc2541f0ad8a36737b28acd52c3d139707313a..8e5e72a86cee2548bc879256852dcab7486689a6 100644
--- a/app/controllers/admin/communication/website/posts_controller.rb
+++ b/app/controllers/admin/communication/website/posts_controller.rb
@@ -61,7 +61,12 @@ class Admin::Communication::Website::PostsController < Admin::Communication::Web
 
   def post_params
     params.require(:communication_website_post)
-          .permit(:university_id, :website_id, :title, :description, :text, :published, :published_at, :featured_image, :featured_image_delete, :featured_image_infos, :slug, :author_id, :pinned, category_ids: [])
+          .permit(
+            :university_id, :website_id, :title, :description, :text,
+            :published, :published_at, :featured_image, :featured_image_delete,
+            :featured_image_infos, :featured_image_alt, :slug, :pinned,
+            :author_id, category_ids: []
+          )
           .merge(university_id: current_university.id)
   end
 end
diff --git a/app/controllers/admin/education/programs_controller.rb b/app/controllers/admin/education/programs_controller.rb
index 36c0b863abd4afead5c621c1852d98d5c1377d3c..818067ddfc5672269aa4e01ea3d72f69246ba322 100644
--- a/app/controllers/admin/education/programs_controller.rb
+++ b/app/controllers/admin/education/programs_controller.rb
@@ -80,7 +80,7 @@ class Admin::Education::ProgramsController < Admin::Education::ApplicationContro
   def program_params
     params.require(:education_program).permit(
       :name, :slug, :level, :capacity, :ects, :continuing, :description, :published,
-      :featured_image, :featured_image_delete, :featured_image_infos,
+      :featured_image, :featured_image_delete, :featured_image_infos, :featured_image_alt,
       :prerequisites, :objectives, :duration, :registration, :pedagogy,
       :evaluation, :accessibility, :pricing, :contacts, :opportunities, :other,
       :parent_id, school_ids: [], teacher_ids: [],
diff --git a/app/controllers/admin/research/journal/volumes_controller.rb b/app/controllers/admin/research/journal/volumes_controller.rb
index ed2b0699c8dcc31c60e734de60ef3d073ea63a00..5156eced8538df0fcea8a0fd0f4d5bf4fd1aba62 100644
--- a/app/controllers/admin/research/journal/volumes_controller.rb
+++ b/app/controllers/admin/research/journal/volumes_controller.rb
@@ -54,7 +54,10 @@ class Admin::Research::Journal::VolumesController < Admin::Research::Journal::Ap
 
   def volume_params
     params.require(:research_journal_volume)
-          .permit(:title, :slug, :number, :cover, :cover_infos, :cover_delete, :keywords, :published_at, :description)
+          .permit(
+            :title, :slug, :number, :keywords, :published_at, :description,
+            :cover, :cover_infos, :cover_delete, :cover_alt
+          )
           .merge(university_id: current_university.id)
   end
 end
diff --git a/app/models/communication/website/home.rb b/app/models/communication/website/home.rb
index 835e6f3ccebd62506ccf907853dd415322d153c9..e1bca10f9180ffa0b073bf09099c2590986aef41 100644
--- a/app/models/communication/website/home.rb
+++ b/app/models/communication/website/home.rb
@@ -3,6 +3,7 @@
 # Table name: communication_website_homes
 #
 #  id                       :uuid             not null, primary key
+#  featured_image_alt       :string
 #  github_path              :text
 #  created_at               :datetime         not null
 #  updated_at               :datetime         not null
diff --git a/app/models/communication/website/page.rb b/app/models/communication/website/page.rb
index 472599c29ada5c4d24429e090426f50517adf00b..cd5041fc41a6f16a26179f60ec4afaac9373d138 100644
--- a/app/models/communication/website/page.rb
+++ b/app/models/communication/website/page.rb
@@ -5,6 +5,7 @@
 #  id                       :uuid             not null, primary key
 #  about_type               :string
 #  description              :text
+#  featured_image_alt       :string
 #  github_path              :text
 #  old_text                 :text
 #  path                     :text
diff --git a/app/models/communication/website/post.rb b/app/models/communication/website/post.rb
index 5dfedbc68ca565d5a4ee60f9d1adcc8571d5b585..0267de840efea305dfdfb93595649ca5154e8674 100644
--- a/app/models/communication/website/post.rb
+++ b/app/models/communication/website/post.rb
@@ -4,6 +4,7 @@
 #
 #  id                       :uuid             not null, primary key
 #  description              :text
+#  featured_image_alt       :string
 #  github_path              :text
 #  old_text                 :text
 #  pinned                   :boolean          default(FALSE)
diff --git a/app/models/education/program.rb b/app/models/education/program.rb
index 75f1e25749cc238ca8266dd25c58cf56ce149b6b..115b08d0c42d01e36e2587cfe3c5d02f18aea2cf 100644
--- a/app/models/education/program.rb
+++ b/app/models/education/program.rb
@@ -2,21 +2,22 @@
 #
 # Table name: education_programs
 #
-#  id            :uuid             not null, primary key
-#  capacity      :integer
-#  continuing    :boolean
-#  description   :text
-#  ects          :integer
-#  level         :integer
-#  name          :string
-#  path          :string
-#  position      :integer          default(0)
-#  published     :boolean          default(FALSE)
-#  slug          :string
-#  created_at    :datetime         not null
-#  updated_at    :datetime         not null
-#  parent_id     :uuid
-#  university_id :uuid             not null
+#  id                 :uuid             not null, primary key
+#  capacity           :integer
+#  continuing         :boolean
+#  description        :text
+#  ects               :integer
+#  featured_image_alt :string
+#  level              :integer
+#  name               :string
+#  path               :string
+#  position           :integer          default(0)
+#  published          :boolean          default(FALSE)
+#  slug               :string
+#  created_at         :datetime         not null
+#  updated_at         :datetime         not null
+#  parent_id          :uuid
+#  university_id      :uuid             not null
 #
 # Indexes
 #
diff --git a/app/models/research/journal/volume.rb b/app/models/research/journal/volume.rb
index f2dc30611c70108b630a15741633ba7a0fc673f8..e57f5edac417753745ade4b72cf1cdf11ea1f69f 100644
--- a/app/models/research/journal/volume.rb
+++ b/app/models/research/journal/volume.rb
@@ -3,6 +3,7 @@
 # Table name: research_journal_volumes
 #
 #  id                  :uuid             not null, primary key
+#  cover_alt           :string
 #  description         :text
 #  keywords            :text
 #  number              :integer
diff --git a/app/views/admin/communication/website/home/edit.html.erb b/app/views/admin/communication/website/home/edit.html.erb
index 9677b2abe88d0c6294ead65fbe3a8ae97dd20084..03289829bc54b40d7267c93163411296ab4ac78f 100644
--- a/app/views/admin/communication/website/home/edit.html.erb
+++ b/app/views/admin/communication/website/home/edit.html.erb
@@ -26,6 +26,7 @@
                         input_html: { accept: '.jpg,.jpeg,.png' },
                         preview: true
              %>
+             <%= f.input :featured_image_alt %>
           </div>
         </div>
       </div>
diff --git a/app/views/admin/communication/website/home/jekyll.html.erb b/app/views/admin/communication/website/home/jekyll.html.erb
index 363a532fae49bae3a4489fb514a413813ece06d6..7910e69ed4b9ae6d9e6ff7a9f6b71059bb138525 100644
--- a/app/views/admin/communication/website/home/jekyll.html.erb
+++ b/app/views/admin/communication/website/home/jekyll.html.erb
@@ -4,6 +4,7 @@ permalink: "/"
 title: ""
 <% if @home.featured_image.attached? %>
 image: "<%= @home.featured_image.blob.id %>"
+image_alt: "<%= @home.featured_image_alt %>"
 <% end %>
 description: >
   <%= prepare_for_github @home.text, @home.university %>
diff --git a/app/views/admin/communication/website/pages/_form.html.erb b/app/views/admin/communication/website/pages/_form.html.erb
index 7c7f0ed26e5208c675f6164d7faadb0a700e5ee9..a750e89d7a4e5ce5ce29426f77f1e2b6eecfebf0 100644
--- a/app/views/admin/communication/website/pages/_form.html.erb
+++ b/app/views/admin/communication/website/pages/_form.html.erb
@@ -49,6 +49,7 @@
                       input_html: { accept: '.jpg,.jpeg,.png' },
                       preview: true
            %>
+           <%= f.input :featured_image_alt %>
         </div>
       </div>
     </div>
diff --git a/app/views/admin/communication/website/pages/jekyll.html.erb b/app/views/admin/communication/website/pages/jekyll.html.erb
index 619921c918876da1cb16cde04dd2f122948fd832..55377413e7d4736c72f3d2e4449813ee20e96332 100644
--- a/app/views/admin/communication/website/pages/jekyll.html.erb
+++ b/app/views/admin/communication/website/pages/jekyll.html.erb
@@ -7,6 +7,7 @@ related_category: "<%= @page.related_category_id %>"
 position: <%= @page.position %>
 <% if @page.best_featured_image.attached? %>
 image: "<%= @page.best_featured_image.blob.id %>"
+image_alt: "<%= @page.featured_image_alt %>"
 <% end %>
 description: >
   <%= prepare_for_github @page.description, @page.university %>
diff --git a/app/views/admin/communication/website/posts/_form.html.erb b/app/views/admin/communication/website/posts/_form.html.erb
index 057fb390dc5fa2c92f61162fed75a4a0740c9077..e2d1226bec399ccfc5364aec4e9402b77008dc28 100644
--- a/app/views/admin/communication/website/posts/_form.html.erb
+++ b/app/views/admin/communication/website/posts/_form.html.erb
@@ -49,6 +49,7 @@
                       input_html: { accept: '.jpg,.jpeg,.png' },
                       preview: true
            %>
+           <%= f.input :featured_image_alt %>
         </div>
       </div>
     </div>
diff --git a/app/views/admin/communication/website/posts/jekyll.html.erb b/app/views/admin/communication/website/posts/jekyll.html.erb
index 3cab088580ed4c7705f6292503d53d7b2bafb474..94a08c8776e4ad88d1084da0a585f85b0ac31a43 100644
--- a/app/views/admin/communication/website/posts/jekyll.html.erb
+++ b/app/views/admin/communication/website/posts/jekyll.html.erb
@@ -16,6 +16,7 @@ tags:
 <% end %>
 <% if @post.featured_image.attached? %>
 image: "<%= @post.featured_image.blob.id %>"
+image_alt: "<%= @post.featured_image_alt %>"
 <% end %>
 description: >
   <%= prepare_for_github @post.description, @post.university %>
diff --git a/app/views/admin/education/programs/_form.html.erb b/app/views/admin/education/programs/_form.html.erb
index 9c430556d4bba8ba8c48d5fa60b2744b0add82b2..ab9ea9fbab9511ae05a7d15904000bc61f777474 100644
--- a/app/views/admin/education/programs/_form.html.erb
+++ b/app/views/admin/education/programs/_form.html.erb
@@ -39,6 +39,7 @@
                       input_html: { accept: '.jpg,.jpeg,.png' },
                       preview: true
            %>
+           <%= f.input :featured_image_alt %>
         </div>
       </div>
     </div>
diff --git a/app/views/admin/education/programs/jekyll.html.erb b/app/views/admin/education/programs/jekyll.html.erb
index 9a1484051e52d2ac6c515425ea03cf77201ce82a..d9a369f865f205c3d6b84c977b43c2855f780c10 100644
--- a/app/views/admin/education/programs/jekyll.html.erb
+++ b/app/views/admin/education/programs/jekyll.html.erb
@@ -10,6 +10,7 @@ position: <%= @program.position %>
 related_category: "<%= @github_file.website.categories.find_by(program_id: @program.id)&.id %>"
 <% if @program.best_featured_image.attached? %>
 image: "<%= @program.best_featured_image.blob.id %>"
+image_alt: "<%= @program.featured_image_alt %>"
 <% end %>
 <% if @program.teachers.any? %>
 teachers:
diff --git a/app/views/admin/research/journal/volumes/_form.html.erb b/app/views/admin/research/journal/volumes/_form.html.erb
index 2ebadb0993d9666482c325c82688aee6f518e686..dff3da118cd2d5c9eaeb4183e9ddaf7903ac90c3 100644
--- a/app/views/admin/research/journal/volumes/_form.html.erb
+++ b/app/views/admin/research/journal/volumes/_form.html.erb
@@ -18,6 +18,7 @@
                       input_html: { accept: '.jpg,.jpeg,.png' },
                       preview: 200,
                       direct_upload: true %>
+          <%= f.input :cover_alt %>
           <%= f.input :description, input_html: { rows: 10 } %>
         </div>
       </div>
diff --git a/app/views/admin/research/journal/volumes/jekyll.html.erb b/app/views/admin/research/journal/volumes/jekyll.html.erb
index 9619bed7f938118f85aff351af57cd70aff76d63..b7f348279d478c8d8184248988e485908d2606e3 100644
--- a/app/views/admin/research/journal/volumes/jekyll.html.erb
+++ b/app/views/admin/research/journal/volumes/jekyll.html.erb
@@ -4,7 +4,10 @@ number: <%= @volume.number %>
 issn: "<%= @volume.journal.issn %>"
 keywords: "<%= @volume.keywords %>"
 date: "<%= @volume.published_at %>"
+<% if @volume.cover.attached? %>
 image: "<%= @volume.cover_path %>"
+image_alt: "<%= @volume.cover_alt %>"
+<% end %>
 articles:
 <% @volume.articles.each do |article| %>
 - <%= article.id %>
diff --git a/config/locales/communication/en.yml b/config/locales/communication/en.yml
index 0fc87e398ae24d3789f61051f8d67f72f1c71f21..8928fa86f7138b08940d67df090c6944715e19c6 100644
--- a/config/locales/communication/en.yml
+++ b/config/locales/communication/en.yml
@@ -63,6 +63,7 @@ en:
       communication/website/home:
         text: Text
         featured_image: Featured image
+        featured_image_alt: Alt text
       communication/website/imported/category:
         original: Original
       communication/website/imported/medium:
@@ -82,6 +83,7 @@ en:
         children: Children pages
         description: Description (SEO)
         featured_image: Featured image
+        featured_image_alt: Alt text
         parent: Parent page
         published: Published?
         slug: Slug
@@ -94,6 +96,7 @@ en:
         categories: Categories
         description: Description (SEO)
         featured_image: Featured image
+        featured_image_alt: Alt text
         pinned: Pinned?
         published: Published?
         published_at: Publication date
diff --git a/config/locales/communication/fr.yml b/config/locales/communication/fr.yml
index 43725064ec3a4751a665e4a4c8c9d2a87d5dbe61..57be17030f4598641d9f3d7e086104f893e18fb8 100644
--- a/config/locales/communication/fr.yml
+++ b/config/locales/communication/fr.yml
@@ -53,6 +53,7 @@ fr:
       communication/website/home:
         text: Texte
         featured_image: Image à la une
+        featured_image_alt: Texte alternatif
       communication/website/imported/category:
         original: Original
       communication/website/imported/medium:
@@ -72,6 +73,7 @@ fr:
         children: Pages enfants
         description: Description (SEO)
         featured_image: Image à la une
+        featured_image_alt: Texte alternatif
         parent: Page parente
         published: Publié ?
         slug: Slug
@@ -84,6 +86,7 @@ fr:
         categories: Catégories
         description: Description (SEO)
         featured_image: Image à la une
+        featured_image_alt: Texte alternatif
         pinned: Mis en avant ?
         published: Publié ?
         published_at: Date de publication
diff --git a/config/locales/education/en.yml b/config/locales/education/en.yml
index 4a8df2002df8b4275b370964627e64997a00bd52..b5632491faf4b8dac875dcb37ac54730fcfed41c 100644
--- a/config/locales/education/en.yml
+++ b/config/locales/education/en.yml
@@ -21,6 +21,7 @@ en:
         ects: Crédits ECTS
         evaluation: Modalités d’évaluation
         featured_image: Featured image
+        featured_image_alt: Alt text
         level: Level
         name: Name
         objectives: Objectifs
diff --git a/config/locales/education/fr.yml b/config/locales/education/fr.yml
index c29355c5d5188e0d8ccf748cadb7b1a5da075aac..87fe2b06be29c08860c2ae274bd3d90d4c04d20a 100644
--- a/config/locales/education/fr.yml
+++ b/config/locales/education/fr.yml
@@ -21,6 +21,7 @@ fr:
         ects: Crédits ECTS
         evaluation: Modalités d’évaluation
         featured_image: Image à la une
+        featured_image_alt: Texte alternatif
         level: Niveau
         name: Nom
         objectives: Objectifs
diff --git a/config/locales/research/en.yml b/config/locales/research/en.yml
index 43651a895ebeddb2a5a0e6c3c0bc9c4b292d4549..eeb3d4532867969913bdf35cd7a4e126257509a3 100644
--- a/config/locales/research/en.yml
+++ b/config/locales/research/en.yml
@@ -28,6 +28,7 @@ en:
         title: Title
       research/journal/volume:
         cover: Cover
+        featured_image_alt: Alt text
         description: Description
         keywords: Keywords
         number: Number
diff --git a/config/locales/research/fr.yml b/config/locales/research/fr.yml
index 345543bf2823ad464aa6b653c53ef2504db5d945..10719c2d30e64a53d5af5b897d571c85e60e7ca5 100644
--- a/config/locales/research/fr.yml
+++ b/config/locales/research/fr.yml
@@ -28,6 +28,7 @@ fr:
         title: Titre
       research/journal/volume:
         cover: Couverture
+        cover_alt: Texte alternatif
         description: Description
         keywords: Mots clés
         number: Numéro
diff --git a/db/migrate/20211223085935_add_featured_image_alt_to_models.rb b/db/migrate/20211223085935_add_featured_image_alt_to_models.rb
new file mode 100644
index 0000000000000000000000000000000000000000..14262fe63b0dbfc57476030294863d35b2f4c7e8
--- /dev/null
+++ b/db/migrate/20211223085935_add_featured_image_alt_to_models.rb
@@ -0,0 +1,9 @@
+class AddFeaturedImageAltToModels < ActiveRecord::Migration[6.1]
+  def change
+    add_column :communication_website_homes, :featured_image_alt, :string
+    add_column :communication_website_pages, :featured_image_alt, :string
+    add_column :communication_website_posts, :featured_image_alt, :string
+    add_column :education_programs, :featured_image_alt, :string
+    add_column :research_journal_volumes, :cover_alt, :string
+  end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 73760d36b7e67fcf74c7e182ffddc59fcdbb7ef8..ba4496448e3cc3ecc2b94c11c520297af4ddd4ef 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
 #
 # It's strongly recommended that you check this file into your version control system.
 
-ActiveRecord::Schema.define(version: 2021_12_20_085352) do
+ActiveRecord::Schema.define(version: 2021_12_23_085935) do
 
   # These are extensions that must be enabled in order to support this database
   enable_extension "pgcrypto"
@@ -140,6 +140,7 @@ ActiveRecord::Schema.define(version: 2021_12_20_085352) do
     t.datetime "created_at", precision: 6, null: false
     t.datetime "updated_at", precision: 6, null: false
     t.text "github_path"
+    t.string "featured_image_alt"
     t.index ["communication_website_id"], name: "idx_comm_website_homes_on_communication_website_id"
     t.index ["university_id"], name: "index_communication_website_homes_on_university_id"
   end
@@ -301,6 +302,7 @@ ActiveRecord::Schema.define(version: 2021_12_20_085352) do
     t.boolean "published", default: false
     t.text "github_path"
     t.uuid "related_category_id"
+    t.string "featured_image_alt"
     t.index ["about_type", "about_id"], name: "index_communication_website_pages_on_about"
     t.index ["communication_website_id"], name: "index_communication_website_pages_on_communication_website_id"
     t.index ["parent_id"], name: "index_communication_website_pages_on_parent_id"
@@ -322,6 +324,7 @@ ActiveRecord::Schema.define(version: 2021_12_20_085352) do
     t.text "github_path"
     t.uuid "author_id"
     t.boolean "pinned", default: false
+    t.string "featured_image_alt"
     t.index ["author_id"], name: "index_communication_website_posts_on_author_id"
     t.index ["communication_website_id"], name: "index_communication_website_posts_on_communication_website_id"
     t.index ["university_id"], name: "index_communication_website_posts_on_university_id"
@@ -385,6 +388,7 @@ ActiveRecord::Schema.define(version: 2021_12_20_085352) do
     t.string "path"
     t.text "description"
     t.boolean "published", default: false
+    t.string "featured_image_alt"
     t.index ["parent_id"], name: "index_education_programs_on_parent_id"
     t.index ["university_id"], name: "index_education_programs_on_university_id"
   end
@@ -463,6 +467,7 @@ ActiveRecord::Schema.define(version: 2021_12_20_085352) do
     t.text "description"
     t.text "keywords"
     t.string "slug"
+    t.string "cover_alt"
     t.index ["research_journal_id"], name: "index_research_journal_volumes_on_research_journal_id"
     t.index ["university_id"], name: "index_research_journal_volumes_on_university_id"
   end
diff --git a/test/fixtures/education/program/members.yml b/test/fixtures/education/program/members.yml
index d9c701b91f1d9a57a3e90c71cf5a3446e7f977fe..1b1ab21f9251d7a4ccafe40219a94f39e6226267 100644
--- a/test/fixtures/education/program/members.yml
+++ b/test/fixtures/education/program/members.yml
@@ -19,7 +19,6 @@
 #  fk_rails_...  (member_id => administration_members.id)
 #  fk_rails_...  (program_id => education_programs.id)
 #
-# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html
 
 one:
   role: MyString