diff --git a/app/helpers/events_helper.rb b/app/helpers/events_helper.rb
index f3de24a259b149618126cc45ed4658633c21dfcf..36d78bdf8d33e1eb5714080d52c5912789275fb2 100644
--- a/app/helpers/events_helper.rb
+++ b/app/helpers/events_helper.rb
@@ -45,18 +45,23 @@ module EventsHelper
       end: l(event.end_time, format: :at)
   end
 
-  def wrap(s, width = 78)
-    s.gsub(/(.{1,#{width}})(\s+|\Z)/, "\\1\n")
-  end
-
-  def display_attr(label, value = @event[label])
-    return unless value
-    Event.human_attribute_name(label).rjust(12) + " #{value}"
-  end
-
   # Select the events to display in a month, sorted
   def month_events(events, date)
     events.select { |e| (e.start_time.to_date..e.end_time.to_date).cover? date }
           .sort_by(&:city)
   end
+
+  def display_attr(item, label, value = item[label])
+    # return unless value
+    item.class.human_attribute_name(label).rjust(12) + " #{value}"
+  end
+
+  def to_markdown(description, line_width = -1)
+    desc = sanitize description,
+                    tags: %w[p br h1 h2 h3 h4 table tr th td ul ol li a strong
+                             b em i sub sup],
+                    attributes: %w[href]
+    Kramdown::Document.new(desc, input: :html, line_width: line_width)
+                      .to_kramdown
+  end
 end
diff --git a/app/views/digests/markdown.html.haml b/app/views/digests/markdown.html.haml
index a0f8de3bd306c8caf1535b1868460d92e1714ff1..e02e9c29134c27b0184c004666c5cc5cedceb693 100644
--- a/app/views/digests/markdown.html.haml
+++ b/app/views/digests/markdown.html.haml
@@ -8,10 +8,7 @@
   - @events.sort_by(&:start_time).each do |event|
     [#{event.region.region.try(:code) || event.region.try(:code)} #{event.city}] [#{event.title}](#{event_url event}) - #{display_date event}
     \-----
-
-    - Kramdown::Document.new(event.description, input: 'html').to_kramdown.split(/\n/)[0..2].each do |p|
-      = p
-      \
+    = to_markdown event.description, -1
     \
     * #{[event.place_name, event.full_address].compact.join ', '}
     - if event.url.present?
diff --git a/app/views/events/index.rss.builder b/app/views/events/index.rss.builder
index ae252f0da685756fb55ac2f1dabbe5913f532740..be3c65916197f60a1410f784f4d97db63b3ec94b 100644
--- a/app/views/events/index.rss.builder
+++ b/app/views/events/index.rss.builder
@@ -12,7 +12,7 @@ def event_to_rss(xml, event)
 
   xml.title "#{event.city}: #{event.title}, #{display_date event}"
   xml.link event_url event
-  xml.description strip_tags event.description
+  xml.description event.description
   xml.content(:encoded) { xml.cdata! event.description }
 end
 
diff --git a/app/views/events/show.text.haml b/app/views/events/show.text.haml
index afcf1627fa9884471cba5b16443a3b045f0b9a88..02d2326da3d84a82458cf94da333e9c57dcc23a8 100644
--- a/app/views/events/show.text.haml
+++ b/app/views/events/show.text.haml
@@ -1,19 +1,19 @@
-================================================================================
-= display_attr :title
-= display_attr :start_time, l(@event.start_time, format: :at)
-= display_attr :end_time, l(@event.end_time, format: :at)
-= display_attr :place_name
-= display_attr :address
-= display_attr :city
-= display_attr :region, @event.region
-= display_attr :locality, t("attributes.locality_#{@event.locality}")
-= display_attr :url
-= display_attr :contact
-= display_attr :submitter
-= display_attr :tags, @event.tag_list
+==============================================================================
+= display_attr @event, :title
+= display_attr @event, :start_time, l(@event.start_time, format: :at)
+= display_attr @event, :end_time, l(@event.end_time, format: :at)
+= display_attr @event, :place_name
+= display_attr @event, :address
+= display_attr @event, :city
+= display_attr @event, :region, @event.region
+= display_attr @event, :locality, t("attributes.locality_#{@event.locality}")
+= display_attr @event, :url
+= display_attr @event, :contact
+= display_attr @event, :submitter
+= display_attr @event, :tag_list, @event.tag_list
 - if @event.repeat > 0
-  = display_attr :repeat
-  = display_attr :rule, t(@event.rule, scope: 'activerecord.attributes.event.rule_values')
+  = display_attr @event, :repeat
+  = display_attr @event, :rule, t(@event.rule, scope: 'activerecord.attributes.event.rule_values')
 \
-= Kramdown::Document.new(@event.description, input: 'html').to_kramdown
-================================================================================
+= to_markdown @event.description, 78
+==============================================================================
diff --git a/app/views/orgas/show.text.haml b/app/views/orgas/show.text.haml
index a08b178a3363ec3359959bdfc193de5fcb413616..e23fd62f28a740999a5a281d88d9ef5ca08ce445 100644
--- a/app/views/orgas/show.text.haml
+++ b/app/views/orgas/show.text.haml
@@ -1,20 +1,18 @@
-=====================================================
-#{Orga.human_attribute_name(:kind).concat(':').ljust 12         } #{@orga.kind.name}
-#{Orga.human_attribute_name(:name).concat(':').ljust 12         } #{@orga.name}
-#{Orga.human_attribute_name(:place_name).concat(':').ljust 12   } #{@orga.place_name}
-#{Orga.human_attribute_name(:address).concat(':').ljust 12      } #{@orga.address}
-#{Orga.human_attribute_name(:city).concat(':').ljust 12         } #{@orga.city}
-#{Orga.human_attribute_name(:department).concat(':').ljust 12   } #{@orga.department}
-#{Orga.human_attribute_name(:region).concat(':').ljust 12       } #{@orga.region}
-#{Orga.human_attribute_name(:url).concat(':').ljust 12          } #{@orga.url}
-#{Orga.human_attribute_name(:diaspora).concat(':').ljust 12     } #{@orga.diaspora}
-#{Orga.human_attribute_name(:feed).concat(':').ljust 12         } #{@orga.feed}
-#{Orga.human_attribute_name(:contact).concat(':').ljust 12      } #{@orga.contact}
-#{Orga.human_attribute_name(:submitter).concat(':').ljust 12    } #{@orga.submitter}
-#{Orga.human_attribute_name(:tags).concat(':').ljust 12         } #{@orga.tag_list}
-- if @orga.active.present?
-  #{Orga.human_attribute_name(:active).concat(':').ljust 12     } #{t @orga.active.to_s}
-- unless @orga.description.blank?
-  #{Orga.human_attribute_name(:description).concat(':').ljust 12}
-  = wrap(strip_tags(@orga.description).gsub(/
/, '')).gsub /^/, '  '
-=====================================================
+==============================================================================
+= display_attr @orga, :kind, t("activerecord.attributes.kind.name_#{@orga.kind.name}")
+= display_attr @orga, :name
+= display_attr @orga, :place_name
+= display_attr @orga, :address
+= display_attr @orga, :city
+= display_attr @orga, :department
+= display_attr @orga, :region, @orga.region
+= display_attr @orga, :url
+= display_attr @orga, :diaspora
+= display_attr @orga, :feed
+= display_attr @orga, :contact
+= display_attr @orga, :submitter
+= display_attr @orga, :tag_list, @orga.tag_list
+= display_attr @orga, :active, t(@orga.active.to_s)
+\
+= to_markdown @orga.description, 78
+==============================================================================
diff --git a/config/locales/models/fr.yml b/config/locales/models/fr.yml
index e8130f4e26fc2d15834a915cbbe30c2ba5521058..366f1b7f6f7b15aaa1b80f5234f8c6029714381a 100644
--- a/config/locales/models/fr.yml
+++ b/config/locales/models/fr.yml
@@ -77,7 +77,7 @@ fr:
         city: Ville
         region: Région
         locality: Portée
-        url: URL
+        url: Adresse web
         contact: Contact
         submitter: Soumetteur
         submission_time: En attente depuis