Как лучше скрыть текст?
Используйте паттерн visually-hidden:.visually-hidden {
  /* Удаляем элемент из потока документа */
  position: absolute;
  /* Временное решение для неверно произносимого, размазанного текста */
  white-space: nowrap;
  /* Устанавливаем минимально возможный размер (некоторые скринридеры игнорируют элементы с нулевой высотой и шириной) */
  width: 1px;
  height: 1px;
  /* Скрываем вылезающий за границы контент */
  overflow: hidden;
  /* Сбрасываем любые свойства, которые могут повлиять на размер элемента */
  border: 0;
  padding: 0;
  /* Вырезаем ту часть контента, которая должна отображаться. */
  /* Устаревшее свойство clip для старых браузеров */
  clip: rect(0 0 0 0);
  /* clip-path для новых браузеров. inset(50%) определяет область вставки, которая позволит контенту исчезнуть.  */
  clip-path: inset(50%); 
    /* Похоже, никто до конца не понимает, почему тут margin: -1px. Кроме того, это приводит к проблемам (читай: https://github.com/h5bp/html5-boilerplate/issues/1985). */
  margin: -1px;
}
Будет в индексе.
Генерируй, показывай и скрывай через JS