General FAQ
From LimeSurvey Manual
Getting started
To get a feeling for what you can do with LimeSurvey without reading half the manual, watch some of our video tutorials on YouTube:
- How to set up an account and a survey installation
- Question type: Array
- Assessments
- Placeholder fields
- Question type: Radio list
- Copy/import survey
- Import question
Where can I find a quick introduction to LimeSurvey?
For a quick written introduction to LimeSurvey, see:
- LimeSurvey Cloud - Quick start guide – create and publish your first survey in LimeSurvey Cloud
- Installing LimeSurvey Community Edition – if you want to run LimeSurvey on your own server
Survey design and layout
How can I remove index.php from the URL to get shorter URLs?
If you want to use shorter URLs (without /index.php in every URL), edit application/config/config.php and in the urlManager section change
'showScriptName' => true,
to
'showScriptName' => false,
For this to work on Apache, mod_rewrite must be enabled, and the .htaccess file that comes with LimeSurvey must be in the LimeSurvey root folder. For nginx, see our LimeSurvey nginx example configuration.
How do I hide the red asterisk on mandatory questions?
LimeSurvey shows a red asterisk at the beginning of the question text of mandatory questions. In LimeSurvey 7.x, the word "Required" is shown next to it. To hide them, add a CSS rule to your survey theme:
- Core themes such as Fruity TwentyThree cannot be edited directly. Extend the theme first. This creates an editable copy.
- Open the theme editor for the copy and select the file custom.css.
- Add the following line:
.asterisk, .ls-question-mandatory {display: none;}
Save the changes. Then select the extended theme in the general settings of your survey.
This also hides the asterisk on the public registration form.
How do I create a survey which is open to everyone?
To create a survey that anyone can fill out, do not create a survey participants table. Share the survey link shown on the overview panel.
How do I make all public registration fields mandatory?
If you use a survey participants table and also allow public registration, people who want to take part fill out a registration form with their first name, last name and email address. Only the email address is mandatory:

To make the first name and last name mandatory too, edit the registration form of your survey theme. For Fruity TwentyThree, extend the theme first, open the theme editor for the copy and edit the file views/subviews/registration/register_form.twig. The email field shows how a mandatory field is built:
{# Participants email #}
<div class='{{ aSurveyInfo.class.registerformcolrowc }} row mb-3' {{ aSurveyInfo.attr.registerformcolrowc }}>
<label {{ aSurveyInfo.attr.registerformcolrowclabel }} class='{{ aSurveyInfo.class.registerformcolrowclabel }} control-label'> {{ gT("E-mail") }} {{ include('./subviews/registration/required.twig') }}</label>
<div {{ aSurveyInfo.attr.registerformcolrowcdiv }} >
{{ C.Html.emailField('register_email', aSurveyInfo.sEmail, ({'id' : 'register_email','class' : 'form-control ls-important-field','required' : true, 'placeholder' : gT('Enter e-mail address', 'unescaped')})) }}
</div>
</div>
Change the first name and last name fields the same way:
- Add
{{ include('./subviews/registration/required.twig') }}to the label. This shows the asterisk. - Add
'required' : trueto the options of the text field. This makes the field mandatory.
The edited fields should look like this (the example is from LimeSurvey 7.x; in 6.x, the placeholder texts are written without 'unescaped'):
{# Participants first name #}
<div class='{{ aSurveyInfo.class.registerformcolrow }} col-md-6 col-12 mb-3 mb-md-0' {{ aSurveyInfo.attr.registerformcolrow }}>
<label for='register_firstname' class='{{ aSurveyInfo.class.registerformcolrowlabel }} control-label '>{{ gT("First name") }} {{ include('./subviews/registration/required.twig') }}</label> {# extra label #}
<div class="">
{{ C.Html.textField('register_firstname', aSurveyInfo.sFirstName, ({'id' : 'register_firstname','class' : 'form-control ls-important-field', 'required' : true, 'placeholder' : gT('Enter your first name', 'unescaped') })) }} {# mandatory field #}
</div>
</div>
{# Participants last name #}
<div class='{{ aSurveyInfo.class.registerformcolrowb }} col-md-6 col-12' {{ aSurveyInfo.attr.registerformcolrowb }}>
<label {{ aSurveyInfo.attr.registerformcolrowblabel }} class='{{ aSurveyInfo.class.registerformcolrowblabel }} control-label '>{{ gT("Last name") }} {{ include('./subviews/registration/required.twig') }}</label> {# extra label #}
<div {{ aSurveyInfo.attr.registerformcolrowbdiv }} >
{{ C.Html.textField('register_lastname', aSurveyInfo.sLastName, ({'id' : 'register_lastname', 'class' : 'form-control ls-important-field', 'required' : true, 'placeholder' : gT('Enter your last name', 'unescaped')})) }} {# mandatory field #}
</div>
</div>
The public registration form now shows all three fields as mandatory:

Hiding the language switcher
How to hide the language switchers (on the welcome page and in the top menu) is described in the hints & tips for multilingual surveys.
Hiding the "Exit and clear survey" button
In Fruity TwentyThree, the "Exit and clear survey" button is controlled by the theme option Show 'Clear all' button (under Simple options). It is set to No by default, so participants only see the button if the option has been switched on. To hide the button, set the option to No in the theme options of your survey.
Help, I accidentally...
I forgot my admin password. How do I reset it?
Using the command line
- Log in to your server with a command line (for example with SSH).
- Make sure you can run PHP from the command line (see the PHP documentation).
- Go to your LimeSurvey directory.
- Run this command:
php application/commands/console.php resetpassword USERNAME NEWPASSWORD
USERNAME is the name of an existing administrator account, for example admin. If the php command is not found, use its full path, for example /usr/bin/php. The new password is saved in your shell history, so change it in LimeSurvey after you have logged in.
With only FTP access
Use the third-party controller ResetPasswordController. Remove the file and its settings from config.php again once you have reset the password.
Directly in the database
If you have direct access to the LimeSurvey database, you can set a new password there. LimeSurvey accepts a password that is stored as an SHA-256 hash, and replaces it with a more secure hash the next time the user logs in.
For example, in MySQL or MariaDB, this sets the password of the user admin to newpassword:
UPDATE lime_users SET password = SHA2('newpassword', 256) WHERE users_name = 'admin';
In PostgreSQL, use encode(sha256('newpassword'), 'hex') instead of SHA2('newpassword', 256). If your tables use a different prefix than lime_, change the table name accordingly. Log in and change the password right away.
How can I restore data from a deactivated survey?
We recommend to always expire a survey instead of deactivating it. If you deactivated your survey by mistake, it is important that you don't change anything in the survey!
Then, and only then, the following steps will work:
- Activate your survey again.
- Open the responses of the survey.
- Click on Import and select "Import responses from a deactivated survey table" (LimeSurvey 6.x) or "Import responses from an archived response table" (LimeSurvey 7.x).
- Choose your source table.
- Click on the "Import" button.
I deleted a question/question group/survey!
If you delete it, it is gone. Only a backup can help you recover it.
Hardware and software requirements
For general requirements, see our installation instructions.
What limitations does LimeSurvey have...
...regarding speed
There is no speed limit in LimeSurvey. Everything depends on how fast your server and its connection are. If you expect many participants within a short time and are not sure whether your server can handle this, search our forum for similar topics, use LimeSurvey Cloud, or contact an authorized LimeSurvey partner.
...regarding survey size
'Survey size' refers to the number of questions (and answers) in your survey – don't confuse this with the number of responses to your survey (there is no limit on that). LimeSurvey itself has no limit on the number of questions or answers, but the database you use has several limits. The most important ones are the maximum number of columns in the response table and the maximum size of a row.
MySQL and MariaDB
By default, LimeSurvey creates its tables with the MyISAM storage engine. You can choose InnoDB instead during the installation.
- MyISAM: A row can have at most 65,535 bytes. With the utf8mb4 character set that LimeSurvey uses, one character can need up to four bytes, so a row may hold as few as 16,383 characters. This is usually the first limit you reach.
- InnoDB: A table can have at most 1,017 columns.
For details, see the MySQL documentation.
You can roughly calculate the size of your survey like this:
- Every multiple numerical question: 20 chars for each answer
- Every multiple choice & array question answers: 5 chars for each answer
- Every other question type: 5 chars
- Add 10% for the usual overhead
Microsoft SQL Server
Microsoft SQL Server allows up to 1,024 columns per table and 8,060 bytes per row (see the Microsoft documentation). Even if your survey can be activated, participants may not be able to submit their responses if they contain a lot of text.
The 8,060-byte limit can also cause errors after activation when you browse or export responses. Export the answer codes instead of the answer texts, or export only some of the columns.
PostgreSQL
PostgreSQL allows 250 to 1,600 columns per table, depending on the column types (see the PostgreSQL documentation). When you export responses, you can get an SQLSTATE[54000] error. In that case, export only some of the columns. See this forum post.
How to increase the maximum number of columns in PostgreSQL
If your survey contains too many questions, you can compile PostgreSQL with a larger block size, for example 32 kB (configure option --with-blocksize=32), to fit more columns into a row. A database created with one block size cannot be used by a PostgreSQL server compiled with another one, so do this before you create the LimeSurvey database.
For step-by-step instructions, see Instructions for increasing the maximum number of columns in PostgreSQL on Linux.
Fatal error: Allowed memory size
Depending on your server configuration you might run into memory problems being reported by an error like "Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 233472 bytes) in /path/to/htdocs/limesurvey/filename.php on line 7296".
LimeSurvey sets its own memory limit, which is 256 MB by default. You can raise it by adding the optional setting memory_limit to LimeSurvey's config file.
Please bear in mind that a higher limit set in your server's PHP configuration takes precedence. To raise the PHP memory limit of your server to 512 MB, add:
memory_limit = 512Mto your server's main php.ini file (recommended, if you have access)php_value memory_limit 512Mto the .htaccess file in the LimeSurvey root folder (only if PHP runs as an Apache module)memory_limit = 512Mto a php.ini or .user.ini file in the LimeSurvey root folder (on some hosting setups)
Specific configuration
Under certain circumstances, you need to update the LimeSurvey configuration in application/config/config.php.
Two LimeSurvey instances on the same domain
You can run several LimeSurvey instances on the same domain, for example example.org/ls1 and example.org/ls2. Each instance needs its own session cookie name, set with sessionName in the session section of application/config/config.php. The installer sets a random name, so a fresh installation needs no changes.
If you copied config.php from one instance to another, or your config.php comes from a version older than LimeSurvey 4.0, check that each instance has its own value. Otherwise, logging in to one instance logs you out of the other. Add or change the sessionName line in the existing session section, for example in the config file of ls1:
'session' => array (
'sessionName' => 'LS-ABCDEFGHIJKLMNOP',
),
Use a different random value in the config file of ls2. See also session settings.