diff --git a/src/Lib/Ass/Syl.cc b/src/Lib/Ass/Syl.cc
index dae50d1e767ed5a9ead6754054a3fe0e1bb370fd..0d411f20998acbca715f9dbf444a9f3d46d4f63d 100644
--- a/src/Lib/Ass/Syl.cc
+++ b/src/Lib/Ass/Syl.cc
@@ -6,10 +6,25 @@ using namespace Vivy::Ass;
 Syl::Syl(Line *const line, const QString &lineString, ConstructMode mode) noexcept
     : content(lineString)
     , styleProperties(line->getStyleProperties())
-    , dur(line->getDuration())
+    , duration(line->getDuration())
     , parentLine(line)
 {
     // Will override the `content`, but will be heavy anyway
     if (mode == ConstructMode::ReadAssTags) {
+        const int textBegin = lineString.lastIndexOf('}') + 1;
+        content             = (textBegin >= lineString.size()) ? "" : lineString.mid(textBegin);
+        duration            = getDurationFromString(lineString);
     }
 }
+
+quint64
+Syl::getDurationFromString(const QString &line) noexcept
+{
+    QRegExp re("\\\\(?:k|K|ko|kf)(\\d+)");
+    int pos          = 0;
+    quint64 duration = 0;
+    while ((pos = re.indexIn(line, pos)) != -1) {
+        duration += re.cap(1).toUInt();
+    }
+    return duration;
+}
diff --git a/src/Lib/Ass/Syl.hh b/src/Lib/Ass/Syl.hh
index f6fd016937ce76089725ec0eb38e16cb0724c7f1..101de152b212992bf0030e9eb3d5ccfe8bde6bf5 100644
--- a/src/Lib/Ass/Syl.hh
+++ b/src/Lib/Ass/Syl.hh
@@ -14,7 +14,7 @@ class Syl final {
 private:
     QString content;
     StyleProperties styleProperties;
-    quint64 dur{ 0 };
+    quint64 duration{ 0 };
 
 public:
     Line *const parentLine;
@@ -31,6 +31,9 @@ public:
 
     Syl &operator=(const Syl &) = delete;
     ~Syl() noexcept             = default;
+
+private:
+    static quint64 getDurationFromString(const QString &) noexcept;
 };
 
 }