A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://developers.google.com/apps-script/reference/slides/image below:

Class Image | Apps Script

Skip to main content Class Image

Stay organized with collections Save and categorize content based on your preferences.

Methods Method Return type Brief description alignOnPage(alignmentPosition) Image Aligns the element to the specified alignment position on the page. bringForward() Image Brings the page element forward on the page by one element. bringToFront() Image Brings the page element to the front of the page. duplicate() PageElement Duplicates the page element. getAs(contentType) Blob Return the data inside this object as a blob converted to the specified content type. getBlob() Blob Return the data inside this image as a blob. getBorder() Border Returns the Border of the image. getConnectionSites() ConnectionSite[] Returns the list of ConnectionSites on the page element, or an empty list if the page element does not have any connection sites. getContentUrl() String Gets a URL to the image. getDescription() String Returns the page element's alt text description. getHeight() Number Gets the element's height in points, which is the height of the element's bounding box when the element has no rotation. getInherentHeight() Number Returns the element's inherent height in points. getInherentWidth() Number Returns the element's inherent width in points. getLeft() Number Returns the element's horizontal position in points, measured from the upper-left corner of the page when the element has no rotation. getLink() Link Returns the Link or null if there is no link. getObjectId() String Returns the unique ID for this object. getPageElementType() PageElementType Returns the page element's type, represented as a PageElementType enum. getParentGroup() Group Returns the group this page element belongs to, or null if the element is not in a group. getParentPage() Page Returns the page this page element is on. getParentPlaceholder() PageElement Returns the parent page element of the placeholder. getPlaceholderIndex() Integer Returns the index of the placeholder image. getPlaceholderType() PlaceholderType Returns the placeholder type of the image, or PlaceholderType.NONE if the shape is not a placeholder. getRotation() Number Returns the element's clockwise rotation angle around its center in degrees, where zero degrees means no rotation. getSourceUrl() String Gets the image's source URL, if available. getTitle() String Returns the page element's alt text title. getTop() Number Gets the element's vertical position in points, measured from the upper-left corner of the page when the element has no rotation. getTransform() AffineTransform Returns the page element's transform. getWidth() Number Returns the element's width in points, which is the width of the element's bounding box when the element has no rotation. preconcatenateTransform(transform) Image Preconcatenates the provided transform to the existing transform of the page element. remove() void Removes the page element. removeLink() void Removes a Link. replace(blobSource) Image Replaces this image with an image described by a BlobSource object. replace(blobSource, crop) Image Replaces this image with an image described by a Image object, optionally cropping the image to fit. replace(imageUrl) Image Replaces this image with another image downloaded from the provided URL. replace(imageUrl, crop) Image Replaces this image with another image downloaded from the provided URL, optionally cropping the image to fit. scaleHeight(ratio) Image Scales the element's height by the specified ratio. scaleWidth(ratio) Image Scales the element's width by the specified ratio. select() void Selects only the PageElement in the active presentation and removes any previous selection. select(replace) void Selects the PageElement in the active presentation. sendBackward() Image Sends the page element backward on the page by one element. sendToBack() Image Sends the page element to the back of the page. setDescription(description) Image Sets the page element's alt text description. setHeight(height) Image Sets the element's height in points, which is the height of the element's bounding box when the element has no rotation. setLeft(left) Image Sets the element's horizontal position in points, measured from the upper-left corner of the page when the element has no rotation. setLinkSlide(slideIndex) Link Sets a Link to the given Slide using the zero-based index of the slide. setLinkSlide(slide) Link Sets a Link to the given Slide, the link is set by the given slide ID. setLinkSlide(slidePosition) Link Sets a Link to the given Slide using the relative position of the slide. setLinkUrl(url) Link Sets a Link to the given non-empty URL string. setRotation(angle) Image Sets the element's clockwise rotation angle around its center in degrees. setTitle(title) Image Sets the page element's alt text title. setTop(top) Image Sets the element's vertical position in points, measured from the upper-left corner of the page when the element has no rotation. setTransform(transform) Image Sets the transform of the page element with the provided transform. setWidth(width) Image Sets the element's width in points, which is the width of the element's bounding box when the element has no rotation. Detailed documentation alignOnPage(alignmentPosition)

Aligns the element to the specified alignment position on the page.

Parameters Name Type Description alignmentPosition AlignmentPosition The position to align this page element to on the page. Return

Image — This page element, for chaining.

bringForward()

Brings the page element forward on the page by one element.

The page element must not be in a group.

Return

Image — This page element, for chaining.

Scripts that use this method require authorization with one or more of the following scopes:

bringToFront()

Brings the page element to the front of the page.

The page element must not be in a group.

Return

Image — This page element, for chaining.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

duplicate()

Duplicates the page element.

The duplicate page element is placed on the same page at the same position as the original.

Return

PageElement — The new duplicate of this page element.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

getAs(contentType)

Return the data inside this object as a blob converted to the specified content type. This method adds the appropriate extension to the filename—for example, "myfile.pdf". However, it assumes that the part of the filename that follows the last period (if any) is an existing extension that should be replaced. Consequently, "ShoppingList.12.25.2014" becomes "ShoppingList.12.25.pdf".

To view the daily quotas for conversions, see Quotas for Google Services. Newly created Google Workspace domains might be temporarily subject to stricter quotas.

Parameters Name Type Description contentType String The MIME type to convert to. For most blobs, 'application/pdf' is the only valid option. For images in BMP, GIF, JPEG, or PNG format, any of 'image/bmp', 'image/gif', 'image/jpeg', or 'image/png' are also valid. For a Google Docs document, 'text/markdown' is also valid. Return

Blob — The data as a blob.

getBlob()

Return the data inside this image as a blob.

Return

Blob — The image data as a blob.

getBorder()

Returns the Border of the image.

Return

Border — The border of the image.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

getConnectionSites()

Returns the list of ConnectionSites on the page element, or an empty list if the page element does not have any connection sites.

Return

ConnectionSite[] — The connection sites list, which may be empty if this element has no connection sites.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

getContentUrl()

Gets a URL to the image.

This URL is tagged with the account of the requester, so anyone with the URL effectively accesses the image as the original requester. Access to the image may be lost if the presentation's sharing settings change. The returned URL expires after a short period of time.

Return

String

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

getDescription()

Returns the page element's alt text description. The description is combined with the title to display and read alt text.

Return

String — The page element's alt text description.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

getHeight()

Gets the element's height in points, which is the height of the element's bounding box when the element has no rotation.

This method isn't compatible with all page elements. To learn which page elements aren't compatible with this method, refer to the sizing and positioning limitations.

Return

Number — The page element's inherent height in points, or null if the page element does not have a height.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

getInherentHeight()

Returns the element's inherent height in points.

The page element's transform is relative to its inherent size. Use the inherent size in conjunction with the element's transform to determine the element's final visual appearance.

Return

Number — The page element's inherent height in points, or null if the page element does not have a height.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

getInherentWidth()

Returns the element's inherent width in points.

The page element's transform is relative to its inherent size. Use the inherent size in conjunction with the element's transform to determine the element's final visual appearance.

Return

Number — The page element's inherent width in points, or null if the page element does not have a width.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

getLeft()

Returns the element's horizontal position in points, measured from the upper-left corner of the page when the element has no rotation.

Return

Number — This element's horizontal position in points, from the upper-left corner of the page.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

getLink()

Returns the Link or null if there is no link.

const shape = SlidesApp.getActivePresentation().getSlides()[0].getShapes()[0];
const link = shape.getLink();
if (link != null) {
  Logger.log(`Shape has a link of type: ${link.getLinkType()}`);
}
Return

Link — The Link or null if there is no link.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

getObjectId()

Returns the unique ID for this object. Object IDs used by pages and page elements share the same namespace.

Return

String — The unique ID for this object.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

getPageElementType()

Returns the page element's type, represented as a PageElementType enum.

Return

PageElementType — The page element's type.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

getParentGroup()

Returns the group this page element belongs to, or null if the element is not in a group.

Return

Group — The group this page element belongs to, or null.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

getParentPage()

Returns the page this page element is on.

Return

Page — The page this element resides on.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

getParentPlaceholder()

Returns the parent page element of the placeholder. Returns null if the image is not a placeholder or has no parent.

Return

PageElement — The parent page element of this image placeholder, or null if this image is not a placeholder or doesn't have a parent.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

getPlaceholderIndex()

Returns the index of the placeholder image. If two or more placeholder images on the same page are the same type, they each have a unique index value. Returns null if the image isn't a placeholder.

Return

Integer — This image's placeholder index, or null if the image isn't a placeholder.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

getPlaceholderType()

Returns the placeholder type of the image, or PlaceholderType.NONE if the shape is not a placeholder.

Return

PlaceholderType — The placeholder type of this image.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

getRotation()

Returns the element's clockwise rotation angle around its center in degrees, where zero degrees means no rotation.

Return

Number — The rotation angle in degrees between 0 (inclusive) and 360 (exclusive).

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

getSourceUrl()

Gets the image's source URL, if available.

When an image is inserted by URL, returns the URL provided during image insertion.

Return

String — The image URL or null if the image does not have a source URL.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

getTitle()

Returns the page element's alt text title. The title is combined with the description to display and read alt text.

Return

String — The page element's alt text title.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

getTop()

Gets the element's vertical position in points, measured from the upper-left corner of the page when the element has no rotation.

Return

Number — This element's vertical position in points, from the upper-left corner of the page.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

getTransform()

Returns the page element's transform.

The visual appearance of the page element is determined by its absolute transform. To compute the absolute transform, preconcatenate a page element's transform with the transforms of all of its parent groups. If the page element is not in a group, its absolute transform is the same as the value in this field.

Return

AffineTransform — The page element's transform.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

getWidth()

Returns the element's width in points, which is the width of the element's bounding box when the element has no rotation.

This method isn't compatible with all page elements. To learn which page elements aren't compatible with this method, refer to the sizing and positioning limitations.

Return

Number — The page element's inherent width in points, or null if the page element does not have a width.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

preconcatenateTransform(transform)

Preconcatenates the provided transform to the existing transform of the page element.

newTransform = argument * existingTransform;

For example, to move a page elements 36 points to the left:

const element = SlidesApp.getActivePresentation().getSlides()[0].getPageElements()[0];
element.preconcatenateTransform(
    SlidesApp.newAffineTransformBuilder().setTranslateX(-36.0).build(),
);

You can also replace the page element's transform with setTransform(transform).

Parameters Name Type Description transform AffineTransform The transform to preconcatenate onto this page element's transform. Return

Image — This page element, for chaining.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

remove()

Removes the page element.

If after a remove operation, a Group contains only one or no page elements, the group itself is also removed.

If a placeholder PageElement is removed on a master or layout, any empty inheriting placeholders are also removed.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

removeLink()

Removes a Link.

const slides = SlidesApp.getActivePresentation().getSlides();
slides[1].getShapes()[0].removeLink();
replace(blobSource)

Replaces this image with an image described by a BlobSource object.

Inserting the image fetches it from the BlobSource once and a copy is stored for display inside the presentation. Images must be less than 50MB in size, cannot exceed 25 megapixels, and must be in either in PNG, JPEG, or GIF format.

In order to maintain the image's aspect ratio, the image is scaled and centered with respect to the size of the existing image.

const image = SlidesApp.getActivePresentation().getSlides()[0].getImages()[0];
// Get the Drive image file with the given ID.
const driveImage = DriveApp.getFileById("123abc");
image.replace(driveImage);
Parameters Name Type Description blobSource BlobSource The image data. Return

Image — This Image after the replacement.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

replace(blobSource, crop)

Replaces this image with an image described by a Image object, optionally cropping the image to fit.

Inserting the image fetches it from the BlobSource once and a copy is stored for display inside the presentation. Images must be less than 50MB in size, cannot exceed 25 megapixels, and must be in either in PNG, JPEG, or GIF format.

const image = SlidesApp.getActivePresentation().getSlides()[0].getImages()[0];
// Get the Drive image file with the given ID.
const driveImage = DriveApp.getFileById('123abc');
// Replace and crop the drive image.
image.replace(driveImage, true);
Parameters Name Type Description blobSource BlobSource The image data. crop Boolean If true, crops the image to fit the existing image's size. Otherwise, the image is scaled and centered. Return

Image — This Image after the replacement.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

replace(imageUrl)

Replaces this image with another image downloaded from the provided URL.

Inserting the image fetches it from the URL once and a copy is stored for display inside the presentation. Images must be less than 50MB in size, cannot exceed 25 megapixels, and must be in either in PNG, JPEG, or GIF format.

The provided URL must be publicly accessible and no larger than 2kB. The URL itself is saved with the image and exposed via getSourceUrl().

In order to maintain the image's aspect ratio, the image is scaled and centered with respect to the size of the existing image.

Parameters Name Type Description imageUrl String The URL to download the image from. Return

Image — This Image after the replacement.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

replace(imageUrl, crop)

Replaces this image with another image downloaded from the provided URL, optionally cropping the image to fit.

Inserting the image fetches it from the URL once and a copy is stored for display inside the presentation. Images must be less than 50MB in size, cannot exceed 25 megapixels, and must be in either in PNG, JPEG, or GIF format.

The provided URL must be no larger than 2kB.

Parameters Name Type Description imageUrl String The URL to download the image from. crop Boolean If true, crops the image to fit the existing image's size. Otherwise, the image is scaled and centered. Return

Image — This Image after the replacement.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

scaleHeight(ratio)

Scales the element's height by the specified ratio. The element's height is the height of its bounding box when the element has no rotation.

This method isn't compatible with all page elements. To learn which page elements aren't compatible with this method, refer to the sizing and positioning limitations.

Parameters Name Type Description ratio Number The ratio to scale this page element's height by. Return

Image — This page element, for chaining.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

scaleWidth(ratio)

Scales the element's width by the specified ratio. The element's width is the width of its bounding box when the element has no rotation.

This method isn't compatible with all page elements. To learn which page elements aren't compatible with this method, refer to the sizing and positioning limitations.

Parameters Name Type Description ratio Number The ratio to scale this page element's width by. Return

Image — This page element, for chaining.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

select()

Selects only the PageElement in the active presentation and removes any previous selection. This is the same as calling select(replace) with true.

A script can only access the selection of the user who is running the script, and only if the script is bound to the presentation.

This sets the parent Page of the PageElement as the current page selection.

const slide = SlidesApp.getActivePresentation().getSlides()[0];
const pageElement = slide.getPageElements()[0];
// Only select this page element and replace any previous selection.
pageElement.select();
Authorization

Scripts that use this method require authorization with one or more of the following scopes:

select(replace)

Selects the PageElement in the active presentation.

A script can only access the selection of the user who is running the script, and only if the script is bound to the presentation.

Pass true to this method to select only the PageElement and remove any previous selection. This also sets the parent Page of the PageElement as the current page selection.

Pass false to select multiple PageElement objects. The PageElement objects must be in the same Page.

The following conditions must be met while selecting a page element using a false parameter:

  1. The parent Page of the PageElement object must be the current page selection.
  2. There should not be multiple Page objects selected.

To make sure that’s the case the preferred approach is to select the parent Page first using Page.selectAsCurrentPage() and then select the page elements in that page.

const slide = SlidesApp.getActivePresentation().getSlides()[0];
// First select the slide page, as the current page selection.
slide.selectAsCurrentPage();
// Then select all the page elements in the selected slide page.
const pageElements = slide.getPageElements();
for (let i = 0; i < pageElements.length; i++) {
  pageElements[i].select(false);
}
Parameters Name Type Description replace Boolean If true, the selection replaces any previous selection; otherwise the selection is added to any previous selection. Authorization

Scripts that use this method require authorization with one or more of the following scopes:

sendBackward()

Sends the page element backward on the page by one element.

The page element must not be in a group.

Return

Image — This page element, for chaining.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

sendToBack()

Sends the page element to the back of the page.

The page element must not be in a group.

Return

Image — This page element, for chaining.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

setDescription(description)

Sets the page element's alt text description.

The method is not supported for Group elements.

// Set the first page element's alt text description to "new alt text
// description".
const pageElement =
    SlidesApp.getActivePresentation().getSlides()[0].getPageElements()[0];
pageElement.setDescription('new alt text description');
Logger.log(pageElement.getDescription());
Parameters Name Type Description description String The string to set the alt text description to. Return

Image — This page element.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

setHeight(height)

Sets the element's height in points, which is the height of the element's bounding box when the element has no rotation.

This method isn't compatible with all page elements. To learn which page elements aren't compatible with this method, refer to the sizing and positioning limitations.

Parameters Name Type Description height Number The new height of this page element to set, in points. Return

Image — This page element, for chaining.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

setLeft(left)

Sets the element's horizontal position in points, measured from the upper-left corner of the page when the element has no rotation.

Parameters Name Type Description left Number The new horizontal position to set, in points. Return

Image — This page element, for chaining.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

setLinkSlide(slideIndex)

Sets a Link to the given Slide using the zero-based index of the slide.

// Set a link to the first slide of the presentation.
const slides = SlidesApp.getActivePresentation().getSlides();
const shape = slides[1].getShapes()[0];
const link = shape.setLinkSlide(0);
Parameters Name Type Description slideIndex Integer The zero-based index to the slide. Return

Link — The Link that was set.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

setLinkSlide(slide)

Sets a Link to the given Slide, the link is set by the given slide ID.

// Set a link to the first slide of the presentation.
const slides = SlidesApp.getActivePresentation().getSlides();
const shape = slides[1].getShapes()[0];
const link = shape.setLinkSlide(slides[0]);
Parameters Name Type Description slide Slide The Slide to be linked. Return

Link — The Link that was set.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

setLinkSlide(slidePosition)

Sets a Link to the given Slide using the relative position of the slide.

// Set a link to the first slide of the presentation.
const slides = SlidesApp.getActivePresentation().getSlides();
const shape = slides[1].getShapes()[0];
const link = shape.setLinkSlide(SlidesApp.SlidePosition.FIRST_SLIDE);
Parameters Return

Link — The Link that was set.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

setLinkUrl(url)

Sets a Link to the given non-empty URL string.

// Set a link to the URL.
const slides = SlidesApp.getActivePresentation().getSlides();
const shape = slides[1].getShapes()[0];
const link = shape.setLinkUrl('https://slides.google.com');
Parameters Name Type Description url String The URL string. Return

Link — The Link that was set.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

setRotation(angle)

Sets the element's clockwise rotation angle around its center in degrees.

This method isn't compatible with all page elements. To learn which page elements aren't compatible with this method, refer to the sizing and positioning limitations.

Parameters Name Type Description angle Number The new clockwise rotation angle to set, in degrees. Return

Image — This page element, for chaining.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

setTitle(title)

Sets the page element's alt text title.

The method is not supported for Group elements.

// Set the first page element's alt text title to "new alt text title".
const pageElement =
    SlidesApp.getActivePresentation().getSlides()[0].getPageElements()[0];
pageElement.setTitle('new alt text title');
Logger.log(pageElement.getTitle());
Parameters Name Type Description title String The string to set the alt text title to. Return

Image — This page element.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

setTop(top)

Sets the element's vertical position in points, measured from the upper-left corner of the page when the element has no rotation.

Parameters Name Type Description top Number The new vertical position to set, in points. Return

Image — This page element, for chaining.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

setTransform(transform)

Sets the transform of the page element with the provided transform.

Updating the transform of a group changes the absolute transform of the page elements in that group, which can change their visual appearance.

Updating the transform of a page element that is in a group only changes the transform of that page element; it doesn't affect the transforms of the group or other page elements in the group.

For details on how transforms impact the visual appearance of page elements, see getTransform().

Parameters Name Type Description transform AffineTransform The transform that is set for this page element. Return

Image — This element, for chaining.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

setWidth(width)

Sets the element's width in points, which is the width of the element's bounding box when the element has no rotation.

This method isn't compatible with all page elements. To learn which page elements aren't compatible with this method, refer to the sizing and positioning limitations.

Parameters Name Type Description width Number The new width of this page element to set, in points. Return

Image — This page element, for chaining.

Authorization

Scripts that use this method require authorization with one or more of the following scopes:

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2024-12-03 UTC.

[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2024-12-03 UTC."],[[["The `Image` object in the Google Slides API allows manipulation of images within presentations, such as resizing, rotating, replacing, and linking."],["Developers can access image properties like dimensions, position, source URL, and links using dedicated methods."],["Google Apps Script provides methods for interacting with images, including retrieving properties, manipulating attributes, and replacing images."],["Most API methods and Apps Script functions require authorization with specific scopes to access and modify presentations."],["Understanding inherent size, transforms, and limitations is crucial for effective image manipulation in Google Slides."]]],["The `Image` class allows manipulation of images within presentations. Key actions include: positioning (`alignOnPage`, `setLeft`, `setTop`), layering (`bringForward`, `sendToBack`), resizing (`scaleHeight`, `setWidth`), and replacing (`replace`). Images can be duplicated, removed, or have their links modified. Methods exist for getting properties like size, position, rotation, alt text, and unique IDs. It can also obtain the `Blob` and content of an `Image`. Image transforms can be set, and they can be selected.\n"]]


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4