SQLite Manager An os-independent full-featured SQLite manager for browsers
Support Development
PayPal ● 
Bitcoin Address: 1sM2BrTH8BRgt3quiASK8TmYSafutNvDo
Ether Address: 0xCf9eaAc56992e12EB61fD46342172d4EEff5C8e4

"SQLite Manager" extension brings SQLite database interaction to your browser. You can read one or multiple SQLite databases and run SQLite commands right in your browser. You can even create a new SQLite database in the browser memory and save it later. This extension is enhanced with two extra powerful libraries (math.js and Chart.js). 'math.js' is very handy when it comes to doing mathematics for arrays and matrixes. You can simply import an SQLite table or part of a table as a 2D matrix with a custom name and manipulate with the data like you are using a powerful external math compiler like Matlab for instance. The 'Chart.js' library can be used to plot the data. Basically, with these libraries, you can import a table from SQLite database, manipulate or extract a sub-matrix to create two one-dimensional arrays directly from your SQLite data or after applying some math on your data then plot them! Also like Matematica, the extension keeps the history of the commands so you can rerun them or look at the previous commands anytime. When you are done with the database, the extension allows you to save the new database for later use. This extension does not require any native component, it just uses JavaScript!.


  1. What is the "SQLite Manager" extension and how does it work?

    This extension aims to simplify SQLite database access, manipulation, and storage. Plus it helps you to plot the database rows and columns. You can even import a table or part of a table as a matrix into the mathematical environment and start manipulating the data like experts.

  2. What's new in this version?

    Please check the Logs section.

  3. How can I use this tool?

    When the extension is installed, press the toolbar button to open a new SQLite manager window. You can press the button one more time to open the second manager which is isolated from the first one. Each manager window can load multiple database files simultaneously. Just drop the file to the UI. When a file is dropped, you will see its name and its id in the top left side of the window. To change the active database, click on the select button and activate the database of interest. If you have no database to start with, use the top-right menu button to create a new database. You can create a new database from the command-line interface too. Just type new("database-name.sqlite") command in the command-line text box and press the Enter key. You will notice that a new database gets created in memory and the left-top selection tool will display the name of the database. You can create multiple databases with the same command. Note that the name that is used during the database creation will be used as the file-name of the SQLite database when saving is requested. A list of all the created or imported databases will be shown in the right-top selection tool. Now let's create a new table with CREATE TABLE hello (name char, x int, y int); command. Paste the command and then press the Enter key. You will notice that all the commands are listed so you can revisit them later. You can even fix a command and rerun it by pressing the Enter key! Now that we have our "hello" table, let's fill it with some data. If you need to write multiline SQL commands, use Shift + Enter keys to go to the next line of the editor without executing the command. Paste the following data to the table:

    INSERT INTO hello VALUES ("p1", 0, 0);
    INSERT INTO hello VALUES ("p2", 1, 1);
    INSERT INTO hello VALUES ("p3", 3, 3);
    INSERT INTO hello VALUES ("p4", 4, 2);
    INSERT INTO hello VALUES ("p5", 5, 4);
    INSERT INTO hello VALUES ("p6", 8, 10);
    INSERT INTO hello VALUES ("p7", 10, 120);
    INSERT INTO hello VALUES ("p8", 11, 0);
    Now press the Enter key to save the points to the table. Let's make sure the points are in the table. We can query the entire table with the SELECT * FROM hello command. After executing this command we get a table with all the points! Now that we have the data available we can plot it too! But we need to import the table to math.js environment first. Basically, all the commands that are not valid SQLite commands will be run as math.js command. For instance, you can multiply two numbers with the 1 + 2 command or you can create arrays with the following command:
    a = [1,2,3];
    b = [1:10];
    c = a * 2;
    so it seems very convenient to port our table to this powerful environment. You can do this by piping an SQLite command like SELECT * FROM hello | import as myVar. From now on, the "myVar" is a variable that contains your table. To import a section of a table use the SELECT x, y FROM hello LIMIT 3 | import as mySecondVar command. So we have our table in the math.js as a matrix. Now let's plot the table! To plot a table we will use the built-in "plot" command. This command requires one or two one-dimensional arrays. If only a single array is passed to the function, it is considered as the values in y-direction and the x-direction points will be generated automatically. To extract the 1D arrays from a column of the matrix use myVar[:,1] and to extract 1D array from a row of the matrix use myVar[1,:] where the "1" is the one-based row number. For our example, x and y arrays are located in the columns. So we get them like: x = myVar[:,2]; y = myVar[:, 3]; We are ready to plot with plot(x, y) command! Note that at this time, plot function needs to be run in a new section to see the actual output.

  4. How powerful this "math.js" library is and where can I find its documentation?

    This is the most powerful math library for interactive JavaScript applications. See http://mathjs.org/ website for information and syntaxes.

  5. Is it possible to save the in-memory database for later use?

    Yes, in the command-line type download(db-id) where "db-id" is the ID for the database. ID number for each database is listed in the left-top selection tool.

  6. I have a database but I don't know its table names to run the "SELECTION" query. Is there any way to find the table names?

    Just drop the database to a manager window and use the command menu on the top-right side and find the command for inspecting the database. Note that if a table has too many entries, limit the printing by adding a "LIMIT number" to the query. For instance just to print the first 3 items in the "hello" table use SELECT * FROM hello LIMIT 3 command.

  7. There is no sorting command in the printed table. How can I sort then?

    Use SQL's ORDER command like SELECT * FROM hello ORDER BY x DESC.

  8. Is it possible to draw multiple plots in a single chart to compare multiple results?

    Yes, as of version 0.1.1, all the plot commands in a single computational box (active textbox) that are not followed by a semicolon are being plotted in a single chart with different colors. So to have multiple plots simply add the plot command in multiple lines and do not end the line with a semicolon. Note that all the math.js statements that are followed by a semicolon will be hidden from the output.

  9. Can I export a table into a CSV format file?

    Yes, any table that is shown in the view has an "Export" button on the top left side of it. Press this button and you will get export.csv in the default download directory of your browser.

  10. Can I import a CSV tabular file into my SQLite database?

    When a file with *.csv format is dropped into the view, the extension converts the tabular data to an SQLite-friendly command. Review the command and press "Enter" to commit. Note that currently only comma-separated CVS database files are supported.

  11. Is there an easy way to change a value in a printed table so that the change also apply to the SQLite database?

    Double-click the table cell that you would like to change and the extension will open a floating commit box for you. Review the query and either accept or decline it. Note that the query needs a unique condition. If your table has "id" or "rowid" column in the original query the extension will use them for generating the "UPDATE" statement, otherwise, the first column is used to generate the condition. You can alter this query and then commit it. Note that the floating window, only supports one statement at the moment, so please do not modify multiple columns or rows in a single floating commit (if you have a complex query that affects more than one cell, it is recommended to use the normal commit box instead of the floating one)

  12. What are the customization the plot function supports?

    The Plot function supports the following customizations which are added like query string to the last parameter of this function (plot(xArray, yArray, 'key1=value1&key2=value, ...').

    To have more than one plot, place each plot command in a single-line. This way multiple plots are being grouped together.

    Avaiable options:
    • type: Type of the plot
      • line (e.g.: plot(sin(1:10), 'type=line'))
      • scatter (e.g.: plot(sin(1:10), "type=scatter&showLine=false"))
      • bar (e.g.: plot([60, -20, 100], "type=bar"))
      • pie (e.g.: plot([60, 40, 100], "type=pie"))
      • doughnut (e.g.: plot([60, 40, 100], "type=doughnut"))
    • label: Plot label. “$” will be replaced by plot’s index (e.g.: plot(sin(1:10), "label=my #$ plot"))
    • borderWidth: The width of the line in pixels (e.g.: plot(sin(1:10), 'borderWidth=5'))
    • backgroundColor: The fill color under the line (e.g.: plot(sin(1:10), 'backgroundColor=red'))
    • borderColor: The color of the line (e.g.: plot(sin(1:10), 'borderColor=red'))
    • hoverBackgroundColor: The fill color under the line when mouse is placed on top of the plot (e.g.: plot([60, 20, 100], "type=bar&hoverBackgroundColor=red"))
    • steppedLine: If the line is shown as a stepped line (e.g.: plot(sin(1:10), "steppedLine=after"))
      • false: No Step Interpolation (default)
      • true: Step-before Interpolation (eq. ‘before’)
      • ‘before’: Step-before Interpolation
      • ‘after’: Step-after Interpolation

  13. Can I execute SQLite command from mathjs environment?

    As of version 0.2.4, it is possible to execute arbitrary SQLite command from the mathjs environment by using sql method. This method has two arguments. The first one is the SQL command to be executed and the second one is an object containing all variables to be bound with the SQLite statement. To run a simple SQLite command just add the first argument (e.g.: sql('SELECT * FROM table_name LIMIT 3')). To send mathjs variables, add the second argument. For instance, let's assume there is a mathjs variable called x. We what to search our table with column name x. To send variables to the SQLite side always prepend them with ":". For instance the mathjs command for this case would be sql('SELECT * FROM table_name WHERE col=:c', {':c': x});. You can run multiple SQLite commands by replacing the second argument with an array. For example, let's say we want to add 10 new records to our table. This is a simple method to do so sql('INSERT INTO table_name(col) VALUES(:v)', map(1:10, f(x) = {':v': x})). In this example, the map function is used to convert an array of 1 to 10 to the array of objects that are needed as the second argument for the SQLite statement.

  14. Can I import data from a JSON file to the SQLite database?

    As of version 0.2.4, if a JSON file is dropped into the window, the mathjs last variable gets filled with the object representing this JSON file. You can use the sql command to send the JSON info to the SQLite database.

  15. I would like to update my SQLite database from a JSON object. Is it possible?

    As of version 0.2.4, you can drop any valid JSON file into the computational window and the JSON will be parsed and will be assigned to the "last" MathJS variable. So you can access it from the MathJS environment. To update the database you need to run one or more SQL statements, so this version supports a new command called "sql(statement, [object or array of inputs])" in the MathJS environment. This command has two input arguments. The first one is the actual SQL statement and the second one which is optional is used to bind the statement with the MathJS variables. For instance, let's say we have a variable called "id" in the MathJS environment and we want to see the queries that match this variable. Run sql('SELECT * from table_name where id=:id', {':id': id}). This commands bind the MathJS "id" with the SQLite statement and then executes it and prints the output in the computational box. To run this statement on multiple ids, just send an array of objects as the second argument. If the array is big and you would like to see the progress, open your browser console. Note that MathJS is slow when it comes to creating large objects. So in version 0.2.4, we introduced a sandboxed JavaScript editor. This editor can be accessed from the managed menu item. When the editor is open, you can access all the MathJS variables inside the "mathjs" global variable. You can even send the output of JS code to the MathJS environment using the "send(name, value)" command. Since we are in JavaScript, "console.log" command will print to the browser console window. If you are dealing with large arrays, it is recommended to use the JS editor to construct your array and then send the result to the MathJS environment to execute SQL command from this array.

Matched Content


Please keep reviews clean, avoid the use of improper language and do not post any personal information.
  • <a> Defines an anchor.

    Example: <a href="http://add0n.com">a sample link</a>

  • <pre><code> Syntax Highlighting (Supported languages: Bash, JSON, HTML, JavaScript, and CSS).

    Example: <pre><code class="javascript">var foo = 'bar';</code></pre>

  • <strong> Defines bold text
  • <blockquote> Defines a long quotation
  • <caption> Defines a table caption
  • <cite> Defines a citation
  • <em> Defines italic text
  • <p> Defines a paragraph
  • <span> Defines a section in a document
  • <s> Defines strikethrough text
  • <strike> Defines strikethrough text
  • <u> Defines underlined text
  • <br> Defines a single line break; can be used alone and don't need an ending tag

What's new in this version

Change Logs:
    Last 10 commits on GitHub
    Hover over a node to see more details

    Need help?

    If you have questions about the extension, or ideas on how to improve it, please post them on the  support site. Don't forget to search through the bug reports first as most likely your question/bug report has already been reported or there is a workaround posted for it.

    Open IssuesIssuesForks

    Editorial Review

    Using SQL/SQLite and managing multiple databases is undoubtedly a challenging task. It requires certain expertise and skills to view and manipulate data from multiple resources. SQLite Manager browser extension aims to make the use of SQLite easy for everyone. Whether they live up to this claim or not, you will get to know by reading this in-depth review of this extension.

    SQLite Manager is definitely a must-have extension for every individual who deals with these databases on regular basis. It is extremely easy to use and provide you just the support you require when using multiple databases. With this extension, you will no longer have to go through the hassles of switching between your browser and SQL software to execute the SQL commands as you will be able to do this right from your browser. Furthermore, it also allows users to read multiple SQLite databases directly from their browser. Another prominent aspect that makes further surges up its importance is the option to create a new SQLite database. It allows easy creation of the database in the browser memory using a simple command. This database can be saved later in the computer hard disk if you need to have access to it later. Thus, all the hassles faced by a database manager while creating a new database are eliminated. This extension serves as a full-featured manager as it can support each and every standard command use to create and modify databases. It is equipped with two powerful libraries that further enhance its functionality and usability. These extensions include math.js and Chart.js. The former makes it easier to handle arrays and matrixes while the latter can prove to be useful when it comes to plotting 2D charts. Another powerful feature it boasts of is that it keeps a history of commands used. Thus, you can always go back and see the commands you have already used with this extension for reusing them. This extension uses JavaScript; hence, there is no requirement to use any native component. With this feature, your browser will not become sluggish and slow and security-wise there is no access to your personal data. In case you have forgotten a table name of a database, there is nothing to worry about as you can easily find it using the built-in tools. All you have to do is to open the manager window of this extension and drop the database there. Then, you will have to open the command menu, there you will spot the command for inspecting the database. Another outstanding feature is that it is free and, as stated above, easy to use. You will just have to install it and you can perform an array of function related to the database using this extension. It supports multiple manager windows in which multiple database files can be loaded simultaneously. Thus, you can work on as many databases as you like all at the same time. Talking about the flipsides, I didn’t find in this extension. Thus, I would suggest this extension to be used by every database manager.

    Permissions are explained

    storageto save internal preferences

    Recent Blog Posts on add0n.com